Exemple de balisage:inversion z-index sur la base de la page ordre de rendu
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
Exemple CSS:
.wrapper {z-index: 1}
.wrapper div {display: none; position: absolute;}
Je joins un événement click via javascript (jQuery) à chaque h2 qui sera ensuite change le contenu div pour afficher: block.
L'intention est que ce soient des blocs de contenu extensibles qui chevaucheront n'importe quoi d'autre sur la page. L'attrape est que je voudrais que le premier chevauche le second, ce qui chevaucherait le troisième dans le cas où tous sont ouverts.
Cependant, étant donné que chacun est rendu APRES le précédent, l'ordre d'empilement réel est inversé (le dernier contenu div créé fin superpose le précédent créé une fois).
Existe-t-il une manière intelligente d'inverser ce comportement avec CSS/HTML? Ou est la solution pour laisser la page de rendu, puis via javascript, saisir tous les divs de contenu dans l'ordre et leur donner chacun un z-index dans l'ordre inverse?
MISE À JOUR:
Voici quelques balises plus spécifiques:
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: yellow;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: orange;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: red;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
Le balisage suivant produira 3 divs, chacun avec un chevauchement div couleur. En raison de l'ordre de rendu, le dernier DIV (rouge) positionné en dernier sera au-dessus de celui précédant (orange).
Je n'arrive pas à comprendre quel type d'index z j'ai besoin d'appliquer pour que la première div superposée soit sur le dessus. L'ordre de haut en bas en termes d'index z devrait refléter le balisage (jaune en haut, rouge en bas).
Ceci est, bien sûr, inverse de la norme.
Je suis prêt à utiliser javascript pour corriger ce post-affichage, mais je me bats toujours pour le CSS précis que j'ai besoin d'appliquer via javascript. Est ce que je suis après faisable?
J'adorerais voir une réponse à cela aussi! J'ai exactement le même problème sauf que je ne saurai pas à l'avance combien il y a à empiler! – n8wrl
Ce serait cool si les fonctions css3 pouvaient être utilisées comme valeurs pour z-index. I.E .: 'contre-incrément: my-counter; z-index: compteur (my-counter, décimal); 'OR' z-index: calc (xpos + 1) ', mais je ne peux pas le faire fonctionner. – skibulk