2014-10-31 9 views
0

이미지 호버가 제대로 작동하지만 마우스를 올려 놓으면 색상이 변경됩니다. 마찬가지로 div를 한 번 올리면 이미지가 바뀝니다.호버를 통해 전체 div 변경하기

이미지 자체에 마우스를 올려 놓고 싶지는 않으며 단지 변경됩니다.

HTML :

<div class="navigation-box">          
     <div class="sidehead"><i class="lock"></i>header 1</div>         
      <div class="navLinks"> 
       <ul class=""> 
        <li>1</li> 
        <li>2</li> 
        <li>3</li> 
       </ul> 
      </div>   
</div>  

CSS : 바이올린에서

.lock { 
    background: url('../images/lock.png') no-repeat center; 
    display: inline-block; 
    width: 30px; 
    height: 30px; 
    text-align: center; 
    vertical-align: middle; 
    margin-top:-5px; 
    margin-left:5%; 
} 

li:hover .lock{ 
    background: url("../images/lock-hover.png") no-repeat center;  
} 

Fiddle

, 당신은 내가 무슨 말 볼 수 있습니다. 단순히 sidehead으로 넘겨서 lock 이미지를 변경하기 만하면됩니다. 어떤 아이디어가 내가 잘못하고있는 것일까 요?

+0

대체 이미지는 흰색으로 흰색이므로 볼 수 없습니다 - http : // jsfiddle.net/acvLkepv/ –

+0

명확하게 설명해 드리겠습니다. 호버 후에 영구적으로 변경 하시겠습니까?그런 요소에서 벗어나면 여전히 흰색 이미지입니까? –

+0

알아. 그것은 내가 말하고 있었던 것이 아니다, 하하! "머리글 1"위로 마우스를 가져 가면 이미지가 변경됩니다. 그것은 그렇게하지 않습니다. 이미지 변경을 확인하려면 이미지 자체에 가야합니다. div 위에 아무 곳이나 마우스를 올리면 이미지가 바뀝니다. – kris

답변

1

선택기가 약간 잘못되었습니다. 당신은 당신이 호버에게

.sidehead .lock { 
 
    background: url('http://uploadir.com/u/il2433z4') no-repeat center; 
 
    display: inline-block; 
 
    width: 30px; 
 
    height: 30px; 
 
    text-align: center; 
 
    vertical-align: middle; 
 
    margin-top:-5px; 
 
    margin-left:5%; 
 
} 
 
.sidehead:hover .lock { 
 
    background: grey url("http://uploadir.com/u/4js58y48") no-repeat center; 
 
} 
 
.sidehead { 
 
    border:1px solid green; /* for visual refernece */ 
 
}
<div class="navigation-box"> 
 
    <div class="sidehead"><i class="lock"></i>header 1</div> 
 
    <div class="navLinks"> 
 
     <ul class=""> 
 
      <li>1</li> 
 
      <li>2</li> 
 
      <li>3</li> 
 
     </ul> 
 
    </div> 
 
</div>

0

CSS can't select a parent 때문에 작동하지 않습니다. 귀하의 CSS는 목록 항목 위로 마우스를 가져 가면 자식 .lock이 처리합니다. jQuery를이 들어오는 곳이다 당신은 다음처럼 작성할 수 있습니다.

$('li').hover(function(){ 
    $('.lock').addClass('newClass'); 
}); 

CSS :

.newClass { 
    background: url("../images/lock-hover.png") no-repeat center; 
} 

이 예에 불과하고 목록의 외부 마우스를하지만해야 할 때 포함되지 않습니다 함께 움직이는 데 도움이됩니다.

0

을 넣어야 할 경우 당신은 자바 스크립트를 사용할 수는 .sidehead 사업부를 통해 마우스를 가져 가면 일이 뭔가를하려는 경우

. 그래서 당신은 호버로 작동하도록 mouseoutmouseover 이벤트를 사용할 수 있습니다

$(".navigation-box").mouseover(function(){ // White image 
    $(".lock").css("background"," url('http://uploadir.com/u/4js58y48') no-repeat center") 
}); 
$(".navigation-box").mouseout(function(){ // Black image 
    $(".lock").css("background"," url('http://uploadir.com/u/il2433z4') no-repeat center") 
}); 

Here is an example합니다. 참고 변경 사항이 분명하도록 본문의 배경색을 변경했습니다. 당신은

또는 작업을 수행 할 수 있습니다

.navigation-box:hover > .sidehead > .lock { 
    background: url("http://uploadir.com/u/4js58y48") no-repeat center; 
} 

For example

0

당신은 쉽게

$('li').on('mouseenter mouseleave', function(e) { 
    $('.lock').trigger(e.type); 
}); 

나는 당신의 리에게 클래스를 제공하기 위해 조언을 것입니다 (또는 UL) jQuery를

를 사용하여이 작업을 수행 할 수 있습니다

이 코드는 li이있을 때 모든 .lock 객체에 대한 호버 이벤트를 트리거합니다. (더 정확하게 보이기를 원한다면 ID와 클래스를 추가하십시오.)

관련 문제