2013-01-14 2 views
1

마우스 아래에서 DOM 요소를 이동할 때 CSS : hover 상태는 마우스 포인터가 이동 될 때까지 계속 유지됩니다.: DOM 요소를 이동할 때 지속성 유지

http://jsfiddle.net/mMzPd/ (사용자까지 클릭 마우스를 이동 한 후 div 요소는 빨간색으로 표시됩니다.) 나는 호버를 끄거나 할 때 DOM 요소 이동 가져가 상태를 재설정 권장하는 솔루션을 찾고 있어요

. 또는 사용자가 요소를 클릭 할 때

자바 스크립트를 통해 CSS 상태를 직접 제어 할 수 없다는 것을 이해했습니다. 현재 가장 좋은 해결책은 Jquerys mouseenter() 및 mouseleave()를 사용하여 HTML 클래스를 전환하는 것입니다. 나는이 수정을 우아하게 찾지도 못했고, 자바 스크립트가 비활성화 된 브라우저로 잘 확장되지도 않는다.

모든 솔루션 가까이 거기에 순수한 CSS는에

$('div').mouseenter(function(){ 
    $(this).addClass('hover'); 
}); 

$('div').mouseleave(function(){ 
    $(this).removeClass('hover'); 
}); 

$('div').click(function(){ 
    $(this).animate({'margin-top':'100px'}); 
    $(this).removeClass('hover'); 
}); 

(http://jsfiddle.net/mMzPd/4/)? Javascript에서 스타일 규칙을 지키려는 것이 이상적입니다.

이 문제는 Chrome 및 Internet Explorer에 표시됩니다. 파이어 폭스는 : hover를 "올바르게"토글합니다.

+0

당신은 어떤 브라우저를 사용합니까? Firefox 18에서 멀리 이동함에 따라 상자가 녹색으로 되돌아갑니다. Ubuntu – Joseph

+0

Chrome 및 Internet Explorer에 이러한 문제가 있습니다. 오페라, 사파리 등 Firefox에 대한 정보는 확실하지 않습니다. 호버 상태. – Tobias

+0

와우. IE10조차 이런 동작을합니다. 브라우저 개선에 많은 도움이됩니다. –

답변

2

다음에 다른 가상 클래스 선택기를 사용하면 어떻습니까?

div:active{ 
    background-color:green; 
} 

http://jsfiddle.net/mMzPd/6/

+0

스마트하고 우아한 수정. 불행히도 : 포커스 동작은 브라우저간에 꽤 일치하지 않습니다. 이 솔루션은 IE10에서는 작동하지만 Chrome에서는 작동하지 않습니다. 가능하다면 다른 Css 상태를 다른 용도로 "무료"로 유지하고 싶습니다. 답변을 주셔서 감사합니다! – Tobias

관련 문제