La plupart des propriétés CSS sont faciles à utiliser. Souvent, lorsque vous utilisez des propriétés CSS sur des éléments d'un langage de balisage, les résultats apparaissent immédiatement lorsque vous actualisez la page. D'autres propriétés CSS sont plus complexes et ne fonctionneront que dans des circonstances données.
L'attribut Z-index appartient à ce dernier groupe mentionné ci-dessus. Z-index provoque sans aucun doute de la confusion (compatibilité) et de la frustration (psychologie des développeurs) plus fréquemment que toute autre propriété. Mais ce qui est amusant, c'est qu'une fois que vous aurez vraiment compris Z-index, vous constaterez qu'il s'agit d'une propriété très facile à utiliser et qu'elle fournira une aide puissante pour résoudre de nombreux problèmes de mise en page.
Dans cet article, nous expliquerons exactement ce qu'est le Z-index, pourquoi il est si inconnu, et discuterons de certaines questions concernant son utilisation pratique. Nous décrirons également certaines des différences d'un navigateur à l'autre que vous rencontrerez, qui sont des problèmes uniques qui existent dans les versions existantes d'IE et de Firefox. Cette perspective complète sur l'attribut Z-index fournira aux développeurs une bonne base de confiance et une aide puissante lors de l'utilisation de l'attribut Z-index.
Qu'est-ce que c'est ? L'attribut
Z-index détermine le niveau en cascade d'un élément HTML. Le niveau d'empilement d'un élément est relatif à la position de l'élément sur l'axe Z (par opposition à l'axe X ou à l'axe Y). Une valeur d'indice Z plus élevée signifie que l'élément sera plus proche du haut dans l'ordre d'empilement. Cette séquence de superposition est présentée le long des axes de fil verticaux.
Pour décrire plus clairement le fonctionnement de Z-index, l'image ci-dessus exagère le positionnement visuel des éléments empilés.
Ordre d'empilement naturel
Dans une page HTML, l'ordre d'empilement naturel (c'est-à-dire l'ordre des éléments sur l'axe Z) est déterminé par de nombreux facteurs. Ce qui suit est une liste qui affiche les éléments de la liste dans un contexte d'empilement (aucune traduction chinoise appropriée n'a encore été trouvée, elle doit faire référence à l'environnement d'empilement dans lequel se trouvent les éléments empilés). fond de l’environnement. Aucun des éléments de cette liste n'a reçu d'attribut Z-index. L'arrière-plan et la bordure de l'élément
créeront un contexte d'empilement
Référence :
·Les éléments de contextes d'empilement avec des valeurs négatives sont disposés dans l'ordre d'apparition (plus en arrière, plus le niveau est élevé)
·Les éléments non positionnés et non flottants au niveau du bloc sont disposés dans l'ordre d'apparition
·Les éléments non positionnés et flottants sont disposés dans l'ordre d'apparition
·Éléments en ligne , disposés par ordre d'apparition
· Éléments positionnés, disposés par ordre d'apparition
L'attribut Z-index, lorsqu'il est utilisé correctement, modifiera l'ordre naturel d'empilement.
Bien sûr, l'ordre d'empilement des éléments ne sera pas particulièrement évident à moins que les éléments n'aient été positionnés de manière à se chevaucher. Ci-dessous, une BOÎTE avec des marges négatives est présentée pour illustrer la séquence naturelle d'empilement.
La BOÎTE ci-dessus est définie avec différentes couleurs d'arrière-plan et de bordure, et les deux dernières sont décalées et définissent une marge supérieure négative, afin que vous puissiez voir le naturel séquence de superposition. La BOÎTE grise est à la première place dans la marque, la BOÎTE bleue est à la deuxième place et la BOÎTE dorée est à la troisième place. Les marges négatives appliquées indiquent clairement le fait que ces éléments n'ont pas de jeu de propriétés d'index Z ; leur ordre d'empilement est naturel, ou la règle composée par défaut. Le phénomène d'entrelacement est provoqué par des marges négatives.
Pourquoi cela crée-t-il de la confusion ?
Même si le Z-index n'est pas une propriété difficile à comprendre, il peut semer la confusion chez de nombreux développeurs juniors en raison d'hypothèses erronées. La confusion se produit parce que Z-index ne fonctionne que sur les éléments dont les attributs de positionnement absolu, fixe ou relatif sont explicitement définis.
Pour prouver que Z-index ne fonctionne que sur des éléments positionnés, voici les trois mêmes BOX, auxquelles l'attribut Z-index est appliqué pour tenter de briser leur ordre d'empilement naturel.
La BOÎTE grise a une valeur d'indice Z de "9999", la BOÎTE bleue a une valeur d'indice Z de "500", et celle en or a une valeur d'index Z de "1". Logiquement, on pourrait penser que l’ordre d’empilement de ces trois BOX serait inversé. Mais ce n’est pas le cas, car aucun de ces éléments n’a l’attribut position défini.
Voici les trois mêmes BOX, chacune définie sur la position : relative, et leurs valeurs d'index Z sont toujours définies comme ci-dessus.
Maintenant, le résultat est celui auquel nous nous attendions : l'ordre d'empilement de ces éléments est inversé ; la BOÎTE grise est recouverte de bleu, et le bleu est recouvert d'or.
Syntaxe
#grey_box {
largeur : 200px ;
hauteur : 200px
bordure : solide 1px #ccc ;
: #ddd ; position : relative ; z-index :
}
#blue_box {
largeur : 200px ;
hauteur : 200px ; bordure : solide 1px #4a7497 ;
arrière-plan : #8daac3 ;
position : relative ;
z-index :
}
#gold_box {
largeur : 200 px ; > hauteur : 200px ;
bordure : solide 1px #8b6125 ;
arrière-plan : #ba945d ;
position : relative
z-index : 1 ; Désormais, l'attribut Z-index ne fonctionne que sur les éléments pour lesquels l'attribut position est défini. C’est quelque chose qui n’est pas pris assez au sérieux, surtout par les débutants.
Utilisez
JavaScript
Si vous souhaitez ajouter dynamiquement l'attribut Z-index à un élément via JavaScript, sa syntaxe est la même que celle de la plupart des autres Éléments CSS. L'accès est similaire, utilisant "camelCase" au lieu de traits d'union dans les propriétés CSS, comme indiqué dans le code suivant.
var myElement = document.getElementById(”gold_box”);
myElement.style.position = “relative”; myElement.style.zIndex = “9999″; dans IE et Analyse incorrecte dans Firefox (problème de compatibilité)
Dans certains cas spécifiques, il y aura des incohérences mineures dans l'analyse de l'attribut Z-index dans les versions IE6, IE7 et Firefox2.
L'élément
menus déroulants
superposés sur l'élément
pour masquer temporairement l'élément
Conteneur parent positionné dans IE6/IE7 : Étant donné que le conteneur parent (élément) est positionné, IE6/7 réinitialisera incorrectement son contexte d'empilement. Pour démontrer ce bug un peu compliqué, nous allons encore une fois placer deux BOX, mais cette fois nous placerons la première BOX à l'intérieur d'un élément positionné. La valeur de l'index z de la BOÎTE grise est "9999" ; la valeur de l'indice z de la BOÎTE bleue est "1". Les deux BOÎTES sont réglées en position. Par conséquent, la mise en œuvre correcte devrait être que la BOÎTE grise soit superposée à la bleue. Ce qui suit est la version HTML de la capture d'écran ci-dessus (limitée au blog actuel, elle ne peut pas avoir autant de contenu que Smashing Magazine The la démo du code s'affiche. Si vous avez besoin de visualiser l'exemple original, veuillez consulter l'article original pour le voir). Si vous le visualisez dans Firefox 3 ou dans d'autres navigateurs actuellement utilisés, vous verrez les résultats d'analyse normaux : l'arrière-plan du la BOÎTE grise (le contexte d'empilement de l'élément Base) apparaît sous tous les objets physiques, et le texte à l'intérieur de la BOÎTE grise apparaît au-dessus de la BOÎTE bleue. Affichage des applications courantes Bulle CSS : Boîte lumineuse : Le script Light Box utilise une image PNG translucide pour assombrir l'arrière-plan, puis prend un nouvel élément, souvent en utilisant un p en forme de fenêtre, pour le placer dans le premier rang. Le PNG qui couvre l'écran et le p qui suit utilisent tous deux l'attribut Z-index pour garantir que ces deux éléments seront positionnés au-dessus des autres éléments de la page. Affichage d'images de l'effet galerie : Galerie de photos Polaroid par Chris Spooner Utilise le CSS3 plus puissant pour travailler avec Z-index pour créer un clic de souris Effet super cool qui sera recodé une fois obsolète. Dans Fancy Thumbnail Hover Effect Soh Tanaka utilise un script basé sur une requête pour modifier l'affectation du z-index. Expériences CSS de Stu Nicholls :
Jeu CSS
Cadre d'imitation CSS
Version améliorée de la mise en page en cascade : Colonne d'extraits de Janko Net : Image de fond pleine page parfaite : Résumé
Mais dans IE6 et IE7, nous verrons la BOÎTE bleue au-dessus de la boîte grise. Cela est dû au fait que le positionnement du conteneur parent externe de la BOX grise est également défini. Les deux navigateurs « réinitialisent » par erreur le contexte d’empilement du conteneur parent positionné, mais cela ne devrait pas être le cas. La BOÎTE grise a une valeur d'indice Z très élevée et elle devrait être au-dessus de la BOÎTE bleue. D'autres navigateurs résoudront ce problème correctement.
Valeurs négatives dans Firefox 2 :
Dans la version Firefox 2, une valeur d'index Z négative fera que l'élément sera derrière le contexte d'empilement au lieu de l'arrière-plan accepté et les bordures sont placées avant d'empiler le contexte sur ces éléments. La capture d'écran ci-dessous montre ce bug de Firefox 2.
L'application de l'attribut z-index aux éléments de la page peut résoudre divers problèmes très facilement. La mise en page Ce défi permet également aux concepteurs d'être plus créatifs en utilisant des éléments en cascade dans leurs conceptions.
Menu de porte coulissante décalée :
Un cas d'application pratique de cette propriété CSS : CTCOnlineCME Ce site utilise l'attribut Z-index pour l'onglet "en cours de clic" et clair images PNG entrelacées, créant de très bons effets.
La propriété Z-index peut également être utilisée pour implémenter des bulles d'invite basées sur CSS, comme ci-dessoustrentrichardson.comComme indiqué
S'il n'y avait pas l'attribut z-index étant appliqué, il n'existe désormais plus beaucoup de scripts Light Box de haute qualité disponibles gratuitement, tels que FancyBox, un plug-in pour JQuery.
Menu déroulant :
Un menu déroulant similaire à La revanche classique de la barre de menus de Brainjar utilise l'index Z pour garantir que les boutons du menu et leurs éléments déroulants sont en haut les uns des autres en haut.
Combinez l'animation JQuery et l'index Z pour créer un diaporama ou un style galerie. Excellents résultats. usejquery.com Cette démo sur le site nous montre la surprise que nous apporte la merveilleuse combinaison des deux.
Stu Nicholls explique sur son site CSSplay Il existe de nombreux CSS cas. Vous trouverez ci-dessous quelques travaux sur la propriété z-index.
Carte d'images CSS
24 façons Ce site Web utilise Z-index comme outil pour améliorer son expérience de modèle. Il étend la longueur et la largeur de l'année et de la date pour qu'elles soient égales au conteneur extérieur du site Web et s'entrelacent les unes avec les autres, créant ainsi un espace. effet très intéressant.
Janko à la vitesse de distorsion Ce site Web est répertorié dans "Janko Net " L'index Z est utilisé dans "Pick Column".
Chris Coyier explique cette technique et l'applique Arrivé à See More Site ringvemedia.com. Appliquez un z-index au conteneur de contenu pour vous assurer qu'il apparaît sur l'image qui ressemble à un « arrière-plan » mais ne l'est pas.
Les relations en cascade en CSS sont un sujet complexe. Cet article n'a pas pour but de discuter de tous les détails de ce sujet, mais de mener une discussion approfondie sur la façon dont Z-index affecte l'ordre d'empilement de nos pages Web. Ce qui est dit ici, une fois bien compris, nous constaterons que cette propriété CSS est si puissante.
Les débutants devraient désormais avoir une très bonne compréhension de cette propriété et éviter bon nombre des problèmes courants qui surviennent lors de son utilisation. De plus, les développeurs expérimentés comprendront mieux comment utiliser correctement Z-index pour éviter de nombreux problèmes de mise en page et ouvriront la porte à la création de davantage d'œuvres d'art CSS.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!