2013-03-31 12 views
7

Chcę zmienić kolor elementu Hdr_nav_search_box podczas ustawiania ostrości na innym elemencie Hdr_nav_search_input. Oto kody: http://jsfiddle.net/FJAYk/4/ Nie rozumiem, dlaczego to nie działa.skupianie się na elemencie zmienia cudzą 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

Myślę, że wiąże się z niewłaściwym skrzypcach. – Scott

+0

@Scott Przepraszamy i dziękuję, zaktualizowałem link. – Sami

Odpowiedz

15

Było kilka problemów z stylów. Po pierwsze, twój selektor, który celuje w pole, nie jest całkiem odpowiedni.

.Hdr_nav_search_input:focus .Hdr_nav_search_box 

To ubiega wybierając wszystkie .Hdr_nav_search_box gdzie są one potomkiem .Hdr_nav_search_input. To rzeczywiście rodzeństwo więc chcesz użyć następnego selektor rodzeństwa +:

.Hdr_nav_search_input:focus + .Hdr_nav_search_box 

drugie to selektor byłyby zastępowane przez zmianę koloru czy to działa.

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

Można użyć po prostu

.Hdr_nav_search_box { 
    ... 
} 

Oto demo i zmiany stylu zrobiłem aby to działa.

jsFiddle

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

Dziękuję za odpowiedź informacyjną. – Sami

Powiązane problemy