2011-03-23 5 views
2

입력 필드가 CSS만을 사용하여 초점을 맞출 때 <li> 활성 상태를 만들 수있는 방법이 있습니까? 그렇지 않다면, 이것을 달성하는 최선의 방법에 대한 제안이 있습니까?css를 사용하여 입력을 집중시킬 때 LI를 활성화 상태로 만듭니다.

라이브 데모보기 http://jsfiddle.net/W5LzP/

이 예제에서 사용자가 입력 필드를 클릭하면 LI의 배경색이 노란색으로 유지됩니다.

CSS :

ol li label{ 
    display:block; 
} 

ol li{ 
    margin-bottom:8px; 
    background-color:#CCC; 
} 

ol li:hover{ 
    background-color:#090; 
} 

ol li:active{ 
    background-color:#FF9; 
} 

ol li input:focus{ 
    border:1px solid #99C; 
    background-color:#99F; 
} 

답변

2

CSS는 하위 항목 만 선택할 수 있으며 조상은 선택할 수 없습니다 (아마 아웃 라인을 작성한 이유 일 수 있음).

JavaScript를 사용해야하는 경우 parentNode 속성을 확인하십시오.

var inputs = document.getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    inputs[i].onfocus = function() { 
     this.parentNode.className += 'active'; 
    } 

    inputs[i].onblur = function() { 
     this.parentNode.className = this.parentNode.className.replace(/\bactive\b/, ''); 
    } 

} 

jsFiddle.

+0

링크 alex에게 감사드립니다. 위의 예제가 작동하도록 parentNode를 사용할 수있는 방법에 대한 예제/설명을 제공 할 수 있습니까? – Dan

+1

예를 들어 보니 완벽하게 작동합니다! 덕분에 당신의 도움 = D – Dan

+0

@Dan 걱정할 필요가 없습니다. 언젠가 그들은 조상을 선택하는 것을 지원할 것입니다. :) – alex

1

불행히도 CSS를 부모 선택기를 지원하지 않습니다. 그래서 할 수있는 유일한 방법은 jQuery와 같은 자바 스크립트를 사용하는 것입니다. parent method.

+0

'parentNode' JavaScript 함수를 직접 사용하는 대신 JQuery와 같은 JavaScript 프레임 워크를 사용하는 것이 좋습니다. 더 다양한 브라우저에서 더 일관된 결과를 제공하기 때문입니다. – theTRON

+0

답변 주셔서 감사합니다. @Alex와 같은 상위 메소드를 사용하여 위 예제를 달성하는 방법에 대한 예제를 제공 할 수 있었다면 답을 얻었을 것입니다. 귀하의 의견을 주셔서 감사합니다. – Dan

+0

@theTRON 'parentNode'와 (과) 일치하는 브라우저는 무엇입니까? – alex

관련 문제