Bonjour,

Voici la situation :
J'ai un sous-menu vertical formé par des LI, contenant des A.

En CSS, je cherche à savoir comment effectuer un :hover sur un LI pour que le fond (largeur total du A) et le texte (contenu dans le A) changent de couleur en même temps.

Je sais que l'on peut faire des :hover sur des LI et des A, mais quand on passe le curseur, on a le fond qui change de couleur, puis seulement après le texte car le curseur finit par arriver dessus. J'aimerais que ça soit les deux en même temps.

D'une autre manière, en mettant le background sur le A, j'arrive à avoir le fond et le texte qui se changent en même temps, mais cette fois c'est la largeur qui ne me convient pas. Elle ne correspond pas à la largeur du LI. J'imagine que le A peut hériter de la largeur du LI, mais je n'y arrive pas.

Je remercie par avance la ou les personnes qui voudrait(en)t bien m'aider.
Bien à vous,

3 réponses


Salut,
Je suis désolé mais je dois t'avouer que j'ai du mal à te suivre, peut-tu nous donner un screenshot ou un ptit bout de code ? ;)
Si tu veux tout simplement changer le "li" et le "a" en même temps :

li a:hover { 
    background-color: #111;
    color: red;
}

Mais je suis pratiquement sûr que ce n'est pas ça que tu cherche ;p

Salut,

mais quand on passe le curseur, on a le fond qui change de couleur, puis seulement après le texte car le curseur finit par arriver dessus. J'aimerais que ça soit les deux en même temps.

Moi non plus je ne suis pas sûr d'avoir suivi, mais voici ce que j'ai cru comprendre :

li:hover {
    background-color: blue;
}

li:hover a {
    color: yellow;
}

Les couleurs ont bien sûr été choisies avec soin et ne peuvent pas être modifiées.

Et pour un effet absolument OUFFISSIME on peut mettre une petite transition :

li {
    -webkit-transition: background-color .4s;
    -moz-transition: background-color .4s;
    -o-transition: background-color .4s;
    transition: background-color .4s;
}
li a {
    -webkit-transition: color .4s;
    -moz-transition: color .4s;
    -o-transition: color .4s;
    transition: color .4s;
}

Je ne sais pas trop si ça se fait comme ça, normalement j'utilise Compass.

Bonjour,
J'ai laissé ce message sur plusieurs forums car c'était urgent. Maintenant j'ai le temps de vous répondre.

On m'a donné la réponse :
J'ai mis dans mon A un

display : block

et ça marche.

Je vais essayer l'animation. Merci beaucoup pour l'inspiration.

C'est la première fois que je laisse un message sur ce forum et je vois qu'il y a de la réactivité. Merci encore pour votre aide :)