2013-03-31 4 views
7

Ich möchte die Elementfarbe Hdr_nav_search_box ändern, wenn Sie auf ein anderes Element konzentrieren Hdr_nav_search_input. Hier sind die Codes: http://jsfiddle.net/FJAYk/4/ Ich sehe nicht, warum das nicht funktioniert.Fokussierung auf ein Element ändert ein anderes CSS

<input class="Hdr_nav_search_input" /> 
<div class="Hdr_nav_search_box" /><span>search for location....</span><i>for example: blah blah</i></div> 

-

.Hdr_nav_search_box{ 
padding: 0 5px; 
margin: 7.5px 0; 
width:300px; 
height: 25px; 
background: white; 
} 
.Hdr_nav_search_input:focus .Hdr_nav_search_box{ 
color: #d4d4d4; 
} 
.Hdr_nav_search_box span,.Hdr_nav_search_box i{ 
line-height: 25px; 
color: gray; 
} 
.Hdr_nav_search_input{ 
padding: 0 5px; 
margin: 7.5px 0; 
border: 0; 
z-index: 2; 
position: absolute; 
width:300px; 
height: 25px; 
background: transparent;  
} 
+0

Ich glaube, Sie an die falsche Geige verbunden. – Scott

+0

@Scott Sorry und danke, ich habe den Link aktualisiert. – Sami

Antwort

15

Es gab ein paar Probleme mit Ihrem Stil. Erstens ist Ihr Selektor zum Anvisieren der Box nicht ganz richtig.

.Hdr_nav_search_input:focus .Hdr_nav_search_box 

Das bewirbt sich alle .Hdr_nav_search_box Auswahl, wo sie ein Nachkomme von .Hdr_nav_search_input sind. Es ist eigentlich ein Geschwister, so dass Sie das nächste Geschwister-Selektor + verwenden mögen:

.Hdr_nav_search_input:focus + .Hdr_nav_search_box 

Zweitens dieser Selektor Ihre Farbwechsel überschreiben würde, wenn es funktioniert.

.Hdr_nav_search_box span,.Hdr_nav_search_box i{ 
    ... 
} 

könnte man einfach nutzen

.Hdr_nav_search_box { 
    ... 
} 

Hier ist eine Demo und der Stil ändert ich es zum Laufen zu bringen gemacht.

jsFiddle

.Hdr_nav_search_input:focus + .Hdr_nav_search_box { 
    color: #F00; 
} 
.Hdr_nav_search_box { 
    line-height: 25px; 
    color: gray; 
} 
+0

Vielen Dank für die informative Antwort. – Sami