6
votes

Z-index: Comment faire des éléments imbriqués apparaissent sous leur élément parent

Ce violon devrait démontrer le problème:

http://jsfiddle.net/5sqxq/2/

Je veux que le sous-menu apparaisse sous le menu parent. J'avais alors cherché à l'étendre avec JavaScript pour faire glisser le menu de dessous sur la survolée de l'élément Parent Li.

NOT PAS FUSSED À propos du JavaScript mais ne peut pas comprendre comment styler les éléments pour atteindre la superposition souhaitée.


0 commentaires

4 Réponses :


12
votes

Cela ne fonctionne pas car vous appliquez un index Z sur l'élément parent qui rend la pile d'éléments d'enfant par rapport aux autres éléments dans le parent .

Une fois que vous avez attribué un élément une valeur pour z-index (autre que Auto), que élément établit son propre local contexte d'empilement. Cela signifie que tous des descendants de l'élément ont leur propre ordre d'empilement, par rapport à l'élément ancêtre.

Donc, si le parent a z-index: 9 et l'enfant est z-index: 8 , il est un peu comme attribuer un index Z de 9, 8

voir L'article ici pour une meilleure explication.

Si vous supprimez l'index Z sur le parent et définissez l'élément de fromage sur z-index: -1 , cela devrait fonctionner. Je ne suis pas sûr de tous les navigateurs, mais cela fonctionne de toute façon à Chrome.

Voici le Fiddle mis à jour

espère que cela aide.


7 commentaires

z-index: -1 est séduisant, mais désagréable. Voir: jsfiddle.net/5sqxq/17 - Tout ce que j'ai fait est d'ajouter le wrapper div avec un arrière-plan.


Merci pour la facilité de mise en œuvre, je suis allé avec la réponse de Thirtydot ci-dessous. Je ne voulais pas vraiment mordre avec -ve z-index. Serait trop douloureux.


Quel est le désagréable de l'utilisation d'un index z négatif? Tout entier est parfaitement valide. Et imho, il lit en fait mieux sémantique si vous voulez que quelque chose apparaisse derrière son parent (vous déplaçez l'enfant à l'envers, au lieu de déplacer les parents en avant)


Avez-vous examiné la démo mise à jour ( jsfiddle.net/5sqxq/17 )? Le fond rouge recouvrant complètement l'élément avec z-index: -1 est désagréable .


Merci a tous. Tout ce que je voulais dire, c'est que je n'étais pas sûr des problèmes de navigateur croisé pour -ve Z-Index, donc allé avec le chemin du moindre résistance. Dates limites et tout ça ...


@THIRTTYDOT: OK, je vois ce que vous dites maintenant - c'est une solution fragile. désagréable est un étrange choix de mot.


J'aurais dû dire " z-index: -1 est séduisant, mais [il a un] désagréable [effet secondaire]". C'est ce que je voulais dire, de toute façon. Désolé pour la confusion.



5
votes

vous ne le faites pas.

à la place, faites le A être le "Connexion" "" Bouton ".

Quelque chose comme ceci: http://jsfiddle.net/5sqxq/15/


0 commentaires

1
votes

Essayez de définir la position des conteneurs parent et des frères et sœurs à la relative. Son a fonctionné pour moi avant.


2 commentaires

Et définissez également le zindex du conteneur parent.


Parfois, vous devez également régler les emplacements de haut / gauche / inférieur, généralement en haut et à gauche ferez.



1
votes

Regardez les règles ci-dessous pour la manière dont les éléments sont empilés et que vous pouvez facilement proposer votre propre solution.

ex. Comme Thirtydot dit, donnez "Connexion" .utilisateur> Li> A Position, Relative ou absolu et z-index : 1

Les règles de l'ordre d'empilement et le contexte d'empilage ci-dessous sont de ce lien

ordre d'empilement dans un contexte d'empilement

L'ordre des éléments:

  1. L'élément racine de contexte empilant (l'élément est le seul contexte d'empilement par défaut, mais n'importe quel élément peut être un élément racine pour un contexte d'empilement, voir les règles ci-dessous)
    • Vous ne pouvez pas mettre un élément enfant derrière un élément de contexte d'empilement racine
    • éléments positionnés (et leurs enfants) avec des valeurs négatives d'index Z (valeurs plus élevées sont empilées devant des valeurs inférieures; les éléments de même valeur sont empilés en fonction de l'apparence dans le HTML)
    • Éléments non positionnés (commandés par apparence dans le HTML)
    • éléments positionnés (et leurs enfants) avec une valeur z-index de Auto (commandé par apparence dans le HTML)
    • éléments positionnés (et leurs enfants) avec des valeurs positives d'index Z (valeurs plus élevées sont empilées devant des valeurs inférieures; les éléments de même valeur sont empilés en fonction de l'apparence dans le HTML)

      Lorsqu'un contexte d'empilement est formé
      • Lorsqu'un élément est l'élément racine d'un document (le élément)
      • Lorsqu'un élément a une valeur de position autre que la valeur statique et une valeur z-index autre que AUTO
      • Lorsqu'un élément a une valeur d'opacité inférieure à 1
      • Plusieurs propriétés CSS plus récentes créent également des contextes d'empilement. Celles-ci incluent: Transforms, filtres, régions CSS, supports de pages et éventuellement d'autres. Voir https://developer.mozilla.org/fr/fr -US / DOCS / Web / CSS / CSS_POSITIONNEMENT / COMPREND_Z_IDEX / THE_STACKING_CONTEXT
      • En règle générale, il semble que si une propriété CSS nécessite un rendu dans un contexte décrénel, il doit créer un nouveau contexte d'empilement.


0 commentaires