2015-01-26 2 views
0

다른 div에 속한 요소에서 마우스를 가져 div에 배치 된 요소에 영향을 줄 수 있습니까?CSS - 두 요소가 다른 div에 속할 때 다른 요소로 커서 이동하여 요소에 영향을 미침

일반적인 형제 선택기를 사용하여 작동하도록 할 수 있지만, 내가 가져온 요소가 다른 요소 안에 들어 있지 않은 경우에만 사용할 수 있습니다. 이것이 유일한 방법일까요?

편집 : 나는 모든 세부 사항으로 당신을 지치고 싶지는 않았지만 예, 아마도 처음에는 마크 업을 포함해야했습니다. 그래서, 여기 단순화 오히려 (이상)입니다 :

<nav> 
    <button></button> 
</nav> 

<div id="sidemenu"> 
<ul class="nav"> 
    <li>Link 1</li> 
    <li>Link 2</li> 
</ul> 
</div> 

소형 기기에서 sidemenu가 숨겨져있을 것이다 및 버튼 요소가 나타납니다합니다. 후자를 가져 가면 사이드 메뉴가 드롭 다운 메뉴로 다시 나타납니다. 적어도 그것이 아이디어였습니다. 마크 업을 변경하는 것이 옳다고 생각하지 않기 때문에 다른 방법을 찾아야합니다.

+2

실제 마크 업을 추가하여 ..... ..... – DaniP

+0

당신이 지금까지 시도한 코드 예제를 게시 할 수 있습니까? – llanato

+0

네, 엘리먼트의 부모 위에서 트래버스 할 수 없으므로 형제를 넘어서거나 계층 구조를 더 아래쪽으로 지나갈 수 없기 때문에 거의 그렇습니다. – BoltClock

답변

1

이것은 불가능합니다. 하위 요소를 상위 요소의 호버에 응답하도록 만들 수 있지만 전혀 다른 요소를 다른 임의 요소의 호버에 응답하도록 만들 수는 없습니다.

CSS 만있는 경우. 약간의 javascript/jQuery를 추가하면 가능합니다. 예를 들어 jQuery에서 호버 기능을 사용할 수 있습니다. 이것은 기본적으로 무엇을

//edited 
$('button').hover(function() { 
    $('#sidemenu').addClass('hover'); 
}, 
function() { 
    $('#sidemenu').removeClass('hover'); 
}); 

#element 유혹과 호버를 제거 할 때 클래스를 제거 할 때 #other-element에 클래스를 추가합니다.

편집 : 마크 업과 일치하도록 코드를 업데이트했습니다. 이 경우 버튼 위로 마우스를 올려 놓으면 사이드 메뉴에 클래스가 추가됩니다. 클래스 hover가 여기에 추가 될 때 CSS의이 작품은 일반적으로 #sidemenu을 숨길 수 있지만 표시 할

#sidemenu 
{ 
display:none; 
} 

#sidemenu.hover 
{ 
display:block; 
} 

: 당신은 다음과 같이 sidemenu 스타일을 할 수있다.

+1

나는 해결책으로 그것에 동의하기 때문에 나는이 대답을 upvoted했다. 그러나 엘리먼트 위로 마우스를 가져 가면 형제 중 하나의 * 자식에게 영향을 미칠 수있다. 단지 CSS를 사용하고'.top : hover + .bottom span', 여기는 [바이올린] (http://jsfiddle.net/6ch2776m/4/) – Dpeif

+0

답장을 보내 주셔서 감사합니다. Anwardo, 나는 JS/JQuery에 대해 많이 모른다. 그러나 올바르게 이해한다면,이 스 니펫은 sidemenu에 HTML 클래스를 추가 할 것인가? CSS와 함께 사용하는 것이 여전히 불가능하지 않습니까? –

+0

내 답변이 업데이트되었습니다. 귀하의 질문에 대한 답변이되기를 바랍니다. @ 형제 선택기를 사용하는 것이 맞습니다. 먼저 질문을 읽을 때 형제 자매를 읽었습니다. 그러나이 경우에는 'nav' 요소 내부에서 자식 위로 마우스를 가져갈 때 동작이 발생해야하기 때문에 어쨌든 적용되지 않습니다. – Anwardo

관련 문제