position : relatif/absoluLe niveau qui ne peut pas être cassé_Échange d'expérience
WBOY
Libérer: 2016-05-16 12:08:29
original
2046 Les gens l'ont consulté
Remarque : Les exemples de cet article peuvent ne pas être affichés sous IE5.x. Veuillez utiliser IE6, IE7, Firefox, Opera et d'autres navigateurs pour déboguer ! Il y a quelque temps, je me souviens que quelqu'un avait posé une question dans le groupe que tout le monde ne comprenait vraiment pas :
et essayez-le. Il est facile de constater que nos enfants ont une valeur d'index z de 1000 et sont définis sur position:absolut; . J'y ai réfléchi longtemps, et je pense que le problème fondamental est : définir la même position : relatif/absolu ; le niveau entre les étiquettes du même niveau ne peut pas être dépassé par le z-index. Dans notre exemple ci-dessus, le niveau du premier LI sera toujours inférieur au niveau du prochain LI, nous définissons donc position:absolute; sur les enfants de LI, ce qui donne une valeur d'indice z très élevée. Peut-être y pensez-vous de cette façon : ne serait-il pas bien de simplement définir position:relative pour le LI avec span ? Très vrai. Lorsqu'aucun autre LI ne définit position:relative; alors l'enfant dont nous avons besoin peut flotter au-dessus de tout le contenu. Mais que se passerait-il si, en fait, l'étendue était requise dans tous les LI et que toutes les propriétés devaient être les mêmes ? Bien sûr, nous n’avons pas nécessairement besoin de cet effet. Mais nous avons besoin d'un tel effet : tous les enfants sont cachés, apparaissent lorsqu'il y a une réaction de la souris et flottent au-dessus de tout le contenu. Il faut savoir que c'est effectivement un casse-tête, car comme nous l'avons vu plus haut, les enfants sont pressés sous l'étiquette parent suivante lorsqu'ils sont affichés. Réalisons l'effet de positionnement de cette réaction de souris : Copiez le code
Le code est le suivant :*{margin:0; padding:0; list- style:none;} li {height:100px margin:0 5px 0 0; :left; width:100px;} li a {position:relative; z-index:1; display:block height:100px;background:#000;}
li a:hover { background:#000000;}
li span {display:none;} li a:hover span {display: block background:#c00; width:200px;position:absolute; ; gauche : 100px ; indice z : 1000 ; }
Si vous devez introduire des J externes, vous devez actualiser pour l'exécuter ] Astuce : Vous pouvez d'abord modifier une partie du code. Lorsque nous exécutons à nouveau , nous définissons a sur position:relative; afin que ses enfants soient positionnés en fonction du coin supérieur gauche du parent comme origine des coordonnées. Ensuite, nous définissons la forme spécifique et les propriétés de positionnement de la travée, puis nous les masquons. Nous utilisons ensuite la pseudo-classe:hover de A pour activer le span. Si nous regardons les résultats, nous verrons que tout ce qui devrait être en haut se trouve désormais en bas. Alors comment résoudre ce problème ? En fait, il est impossible de forcer une percée avec CSS, alors réfléchissons-y, pouvons-nous faire en sorte que la balise parent qui n'a pas été déclenchée n'ait pas l'attribut position:relative, mais seulement quand ; c'est déclenché ? Attribuer une telle valeur à ce parent ? En fait, penser à cela peut en gros résoudre tous les problèmes :
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn