2016-08-01 1 views
0

나는 웹 페이지를 디자인하고 있고 내가 좋아하는 (아무 자산도) 아이콘과 텍스트를 가지고있다.아이콘 위로 마우스를 가져 가면 일부 텍스트에 전환 효과를 적용하는 방법은 무엇입니까?

아이콘 위로 마우스를 가져 가면 기본 텍스트가 다른 문구로 바뀝니다.하지만 갑자기 그럴 수 있기 때문에 기본 텍스트의 전환 효과를 설정할 수 있는지 궁금합니다. 내가 갖고있는 것을 방해하지 않는 CSS로 어떻게하는지 알아낼 수 없습니다.

여기에 지금까지 내 코드입니다 : 기본적으로 https://jsfiddle.net/67m5atwg/

, Icon1 (당신은 이미지 위에 마우스를 가져 가면)에 TBD에서 텍스트 변경, 나는 갑자기되는 대신에 걸쳐 페이드 텍스트를 싶을 때!

내 기존 JavaScript 코드로 수행 할 수 있습니까?

function setTextIcon1(){ 
    document.getElementById("maintext").innerHTML = "Icon1"; 

} 
function setTextIcon2(){ 
    document.getElementById("maintext").innerHTML = "Icon2"; 

} 
function setTextIcon3(){ 
    document.getElementById("maintext").innerHTML = "Icon3"; 

} 
function setTextDefault(){ 
    document.getElementById("maintext").innerHTML = "TBD"; 
} 

내가 CSS로 시도한 모든 것은 다른 것을 방해합니다. 아마 코드가 복잡해 졌을 것입니다. 유감스럽게 생각합니다.

감사합니다!

+0

를 사용하는 같은 것을 할 수 그것은 또한 CSS 전환 등을 사용하여 수행 할 수 있습니다 그래 JS/Jquery 애니메이션을 사용합니다. CSS는 브라우저에서 지원하는 경우 더 빠릅니다. 또한이 함수처럼 setTextIcon1 (text) { document.getElementById ("maintext")와 같은 텍스트를 전달하여 함수를 더 재사용 할 수있게 만들 것을 제안하고 싶습니다. innerHTML = text; }' –

+0

다른 요소를 숨기거나 표시 할 때 스크립트가 텍스트를 전환하는 이유는 무엇입니까? – LGSon

+0

@LGSon 왜냐하면 나는 새롭고 지금 가지고있는 것을 얻는데 몇 시간이 걸렸으므로 더 이상 머리를 쓸 수 없어서 도움을 청하기로 결정했습니다! – Cubly

답변

0

대신 스크립트

@font-face { 
 
    font-family: 'Medrano'; 
 
    src: url('medra.ttf'); 
 
} 
 

 
html, 
 
body { 
 
    height: 100%; 
 
    margin: 0; 
 
} 
 

 
div.iconholder { 
 
    text-align: center; 
 
    position: relative; 
 
    top: 50%; 
 
    transform: translateY(-50%); 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    justify-content: center; 
 
} 
 

 
img.icon { 
 
    height: 50px; 
 
    width: 50px; 
 
    padding: 15px; 
 
} 
 

 
.iconholder div { 
 
    font-family: 'Medrano', sans-serif; 
 
    color: gray; 
 
    font-size: 100px; 
 
    margin: 0; 
 
    vertical-align: middle; 
 
    width: 100%; 
 
    height: 120px; 
 
    order: -1; 
 
} 
 
.iconholder div div { 
 
    position: absolute; 
 
    top: 0; 
 
    height: auto; 
 
    width: 100%; 
 
} 
 

 
.hvr-grow { 
 
    display: inline-block; 
 
    margin: 5px; 
 
    -webkit-transform: translateZ(0); 
 
    transform: translateZ(0); 
 
    box-shadow: 0 0 1px rgba(0, 0, 0, 0); 
 
    -webkit-backface-visibility: hidden; 
 
    backface-visibility: hidden; 
 
    -moz-osx-font-smoothing: grayscale; 
 
    -webkit-transition-duration: 0.3s; 
 
    transition-duration: 0.3s; 
 
    -webkit-transition-property: transform; 
 
    transition-property: transform; 
 
} 
 

 
.hvr-grow:hover, 
 
.hvr-grow:focus, 
 
.hvr-grow:active { 
 
    -webkit-transform: scale(1.1); 
 
    transform: scale(1.1); 
 
} 
 

 
.maintext > div { 
 
    opacity: 0; 
 
    transition: opacity .8s; 
 
} 
 
.maintext .icon0 { 
 
    opacity: 1; 
 
} 
 
.iconholder a:hover ~ .maintext .icon0 { 
 
    opacity: 0; 
 
} 
 
#icon1:hover ~ .maintext .icon1, 
 
#icon2:hover ~ .maintext .icon2, 
 
#icon3:hover ~ .maintext .icon3 { opacity: 1; 
 
    transition: opacity .8s; 
 
}
<div class="iconholder"> 
 

 
    <a href="" id="icon1"> 
 
    <img class="hvr-grow" src="http://placehold.it/50" alt="Icon1" /> 
 
    </a> 
 
    <a href="" id="icon2"> 
 
    <img class="hvr-grow" src="http://placehold.it/50" alt="Icon2" /> 
 
    </a> 
 
    <a href="" id="icon3"> 
 
    <img class="hvr-grow" src="http://placehold.it/50" alt="Icon3" /> 
 
    </a> 
 

 
    <div class="maintext"> 
 
    <div class="icon0">TBD</div> 
 
    <div class="icon1">Icon 1</div> 
 
    <div class="icon2">Icon 2</div> 
 
    <div class="icon3">Icon 3</div> 
 
    </div> 
 

 
</div>

+0

애니메이션과 코드는 고정되었지만 텍스트는 약간 벗어났습니다.이 텍스트를 수정하지 않고 해결할 방법을 찾지 못했습니다. 전환을 깨고, 어떤 아이디어? 또한 패딩을 추가하여 아이콘에서 텍스트를 멀리 옮길 때 오른쪽으로 내려갑니다! – Cubly

+0

@Cubly 내 대답이 업데이트되었습니다.이 문제를 일으키는'iconholder' 규칙에 패딩이 추가되었습니다. – LGSon

+0

네가 대답하기 바로 전에 내가 그 텍스트를 조금 벗어나 아이콘으로 옮길 수있는 방법이 있는지를 알아 냈다. 패딩을 추가했지만 아이콘으로 아래쪽으로 이동하는 것 같습니다! 고마워요 :) – Cubly

0

당신이 JQuery와 함께 할 수 있습니다

function setTextIcon1(){ 
    $('#maintext').fadeOut('slow', function() { 
     $(this).html('icon1'); 
     $(this).delay(300).fadeIn('slow'); 
    }); 
} 
+0

잘 작동하지만 이미지가 분할 초 (지연이 0 일 때)로 위쪽으로 이동하게합니다. 어쨌든 이미지를 제자리에서 수정해야합니까? 바보 같아서 미안해. 그렇지 않으면 당신은 그것을 못 박았습니다! – Cubly

+0

#maintext - display : block에 대해 CSS를 설정해보십시오. 높이 : 115px; – stweb

+0

흠, 작동하지 않았다. jQuery 코드 덕분에 어딘가에 아이템을 보관하는 것에 대한 정보를 찾으려고 노력할 것입니다. – Cubly

관련 문제