2011-08-28 2 views
7

J'ai des problèmes avec du code sur mon site, http://ethoma.com/wp/. Dans la barre de recherche, sur le côté gauche, je veux que le gris foncé "hit enter to search" devienne gris clair quand le champ de recherche (son frère): focus est déclenché. Voici le code que j'ai actuellement:Comment modifier les propriétés des frères et sœurs avec des sélecteurs CSS comme: focus?

#s 
{ 
    min-width:98%; 
    background-color:#2a2a2a; 
    color:#d3d3d3; 
    border:2px solid #000000; 
    font-size:.85 em; 
    height:1.9em; 
    display:inline !important; 
    border-radius:5px 5px 5px 5px; 
} 

#s:focus 
{ 
    border:2px solid #2a2a2a; 
} 

#searchsub 
{ 
    color:#2a2a2a; 
    text-align:right; 
    font-size:.65em; 
    font-weight:lighter; 
} 

#s:focus #searchsub 
{ 
    color:#cccccc; 
} 

D'accord, #s est le champ de recherche et #searchsub est le div que je veux tourner #CCCCCC (gris clair). Le dernier ensemble d'accolades semble être là où j'ai le problème (pas les accolades elles-mêmes, mais le sélecteur au-dessus). Comme je l'ai dit #s est un frère de #searchsub et vice versa. Merci pour vos réponses!

+0

Avez-vous pensé à utiliser jQuery pour le faire? – stefmikhail

+1

Vous devez coller le balisage correspondant à votre thème pour nous éviter de devoir suivre un lien afin de rechercher le balisage correspondant. – BoltClock

Répondre

13

Comme l'a dit stefmikhail, l'espace dans votre sélecteur signifie #searchsub#s. En ce qui concerne HTML, cependant, cela est évidemment faux parce que les champs input sont des éléments vides et vous ne pouvez pas avoir d'autres éléments à l'intérieur.

Vous souhaitez utiliser le sélecteur de frères et soeurs à côté + place, puisque #searchsub est le frère qui vient après #s:

#s:focus + #searchsub 
{ 
    color:#cccccc; 
} 
+0

Doit être mentionné cependant que le sélecteur adjacent fait partie de CSS3, et autant que je souhaite que ce n'était pas le cas, CSS3 n'est * pas * entièrement supporté pour le moment. Si vous voulez que les utilisateurs d'Internet Explorer 7 et ci-dessous disposent de cette fonctionnalité, cela peut être buggé (dans le cas d'IE7) ou inexistant (dans le cas de IE6 et ci-dessous). Je souhaite que nous n'ayons pas à coder pour ces navigateurs, mais ma philosophie est quand il s'agit d'un état stationnaire, utilisez quelque chose qui fonctionnera pour tous, pas seulement pour la plupart. Mais bon, c'est ton appel. Je pense que les sélecteurs CSS3 sont vraiment cool! – stefmikhail

+0

@stefmikhail: Vous avez confondu le sélecteur de frère adjacent CSS2 '+' pour le sélecteur général de CSS3 '~'. Les deux sont très bien supportés dans IE7 +. – BoltClock

+0

Oups, vous avez totalement raison. Merci pour la correction. – stefmikhail

0

Le problème avec votre code est que, en plaçant #searchsub après #s:focus dans #s:focus #searchsub, vous dire CSS d'agir sur l'id #searchsubintérieur l'id #s. Je suis d'accord avec JamWaffles que vous pouvez le faire avec JavaScript. Je le ferais avec jQuery, et si vous le souhaitez, je peux poster comment.

+0

-1. Possible avec CSS seul. Pas besoin de JavaScript. –

+0

@Rikudo Sennin Je n'ai jamais dit que ce n'était pas faisable avec CSS, j'ai seulement dit que je choisirais d'utiliser javascript pour cela, vu que l'utilisation de CSS pour cela ne fonctionnera pas dans les anciens navigateurs IE. – stefmikhail

+1

Quand quelque chose est possible avec css seul. Il est généralement préférable de le faire. Le top auquel j'irais si absolument nécessaire, j'utiliserais Modernizr pour vérifier si possible et utiliser JavaScript autrement. –

Questions connexes