Tout d'abord, je suppose que c'est trop complexe pour CSS3, mais s'il y a une solution quelque part, j'aimerais plutôt y aller.
Le HTML est assez simple.
<div class="parent">
<div class="child">
Text Block 1
</div>
</div>
<div class="parent">
<div class="child">
Text Block 2
</div>
</div>
Le div enfant est défini pour afficher: aucun; par défaut, mais change ensuite pour afficher: bloc; lorsque la souris survole le div parent. Le problème est que ce balisage apparaît à plusieurs endroits sur mon site, et je veux que l'enfant ne soit affiché que si la souris est sur son parent, et non si la souris est sur l'un des autres parents (ils ont tous la même classe nom et aucun identifiant).
J'ai essayé d'utiliser $(this)
et .children()
en vain.
$('.parent').hover(function(){
$(this).children('.child').css("display","block");
}, function() {
$(this).children('.child').css("display","none");
});
la source
:hover
est l'une des "pseudo-classes dynamiques" définies par CSS2 ( voici la spécification ). Voici un exemple rapide: http://jsfiddle.net/5FLr4/ . ça marche pour moi..parent:not(:hover) .child { display: none; }
semble bien fonctionner pour moi, même si je ne suis certainement pas inquiet pour IE6. Mais de cette façon, je peux l'utiliser sur des éléments dont je ne veux pas avoir unedisplay
propriété uniforme .Pas besoin d'utiliser le JavaScript ou jquery, CSS suffit:
VOIR LA DÉMO
la source
Utilisez
toggleClass()
.où
color
est la classe. Vous pouvez styliser la classe comme vous le souhaitez pour obtenir le comportement souhaité. L'exemple montre comment la classe est ajoutée et supprimée lors de l'entrée et de la sortie de la souris.Consultez l'exemple de travail ici .
la source
la source
La réponse de Stephen est correcte mais voici mon adaptation de sa réponse:
HTML
CSS
jQuery
Vous pouvez voir cet exemple travailler sur jsFiddle .
la source
J'ai ce que je pense être une meilleure solution, car elle est évolutive à plus de niveaux, autant que je le souhaite, pas seulement deux ou trois.
J'utilise des bordures, mais cela peut aussi être fait avec n'importe quel style, comme la couleur d'arrière-plan.
Avec la frontière, l'idée est de:
Vous pouvez le tester sur: http://jsbin.com/ubiyo3/13
Et voici le code:
la source
Si vous utilisez le style Twitter Bootstrap et le JS de base pour un menu déroulant:
C'est la pièce manquante pour créer des listes déroulantes collantes (qui ne sont pas ennuyeuses)
la source
Je ne sais pas s'il y a de terribles raisons de le faire ou non, mais cela semble fonctionner avec moi sur la dernière version de Chrome / Firefox sans aucun problème de performance visible avec pas mal d'éléments sur la page.
Mais de cette façon, tout ce dont vous avez besoin est d'appliquer
parent-hover-show
à un élément et le reste est pris en charge, et vous pouvez conserver le type d'affichage par défaut que vous voulez sans qu'il soit toujours "bloc" ou en créant plusieurs classes pour chaque type.la source
Pour le changer de css, vous n'avez même pas besoin de définir la classe enfant
la source