Maison > interface Web > tutoriel CSS > le corps du texte

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 :

Copier le code Le code est le suivant :


  • Le premier bloc
  • troisième bloc
  • Le quatrième bloc
  • Quelle que soit sa hauteur, il sera toujours en dessous du parent derrière lui.




    Copier le code


Le code est le suivant :





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 :

Copier 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 :

Copiez le code
Le code est le suivant :

*{margin:0; padding:0; list-style:none;}
li {hauteur:100px; margin:0 5px 0 0; >li a {display:block height:100px; width:100px; background:#000;}
li a:hover {position:relative; z-index:1; ;} 
li a:hover span {display:block width:200px; height:200px; position:absolute left:100px;





    Le premier bloc ;span>Deuxième pièce
  • >
  •  

    Copier le code


    Le code est le suivant :


    * {margin:0; padding:0; list-style:none;}
    li {hauteur:100px; float:left:100px; background:#000;}
    li :hover {position:relative; z-index:1;}
    li span {display:none;}
    li:hover span {display:block width:200px; ; hauteur : 200 px ; arrière-plan : #c00 ; position : absolu ; gauche : 100 px ;

    [Ctrl+A Tout sélectionner Remarque : Si vous devez introduire des J externes, vous devez actualiser pour l'exécuter ]
    Astuce : Vous pouvez d'abord modifier une partie du code. Exécutez à nouveau
    Lecture originale :
    http://andymao.com/andy/post/67.html
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal