Maison > interface Web > tutoriel CSS > Pourquoi une division à marge négative semble-t-elle glisser *entre* le contenu et l'arrière-plan d'une autre division ?

Pourquoi une division à marge négative semble-t-elle glisser *entre* le contenu et l'arrière-plan d'une autre division ?

Susan Sarandon
Libérer: 2024-12-17 00:38:25
original
295 Les gens l'ont consulté

Why Does a Negatively Margined Div Appear to Slide *Between* the Content and Background of Another Div?

Contenu superposé par éléments superposés : comprendre le puzzle

Introduction

Dans ce contexte, nous avons deux divs sans aucun style complexe (simplement couleur d'arrière-plan). Nous manipulons le deuxième div pour chevaucher le premier en appliquant une marge supérieure négative. Cependant, au lieu de voir un élément chevaucher complètement l'autre, nous trouvons le deuxième div glissant entre le contenu et l'arrière-plan du premier div, présentant un comportement inattendu.

L'ordre de la peinture

Pour comprendre ce comportement, nous devons nous plonger dans les subtilités de l'ordre de peinture dans les navigateurs. L'ordre de peinture des éléments dans un contexte d'empilement suit une séquence prédéfinie :

  1. Couleur de fond de l'élément, même s'il s'agit de l'élément racine.
  2. Image de fond de l'élément, même si c'est l'élément racine.
  3. Contenu de l'élément, tel que du texte et des images, peint de bas en haut.
  4. Arrière-plan et bordure des éléments enfants.

Expliquer le chevauchement

Dans notre exemple, lorsque le deuxième div chevauche le premier, la séquence de peinture suivante se produit :

  1. La couleur d'arrière-plan du deuxième div est peinte sur l'arrière-plan du premier div.
  2. Contenu de le premier div est peint.
  3. Le contenu du deuxième div est peint au-dessus du contenu du premier div.

Étant donné que le contenu du premier div est peint avant l'arrière-plan du deuxième div, le texte semble être positionné au-dessus du fond vert, créant l'illusion que le deuxième div glisse entre eux.

Changer le comportement

Bien que l'ordre de peinture par défaut puisse conduire à de telles situations, il est possible de modifier le comportement en définissant l'opacité de l'élément qui se chevauche sur un valeur inférieure à 1. Cela déclenche l'étape de peinture de l'opacité avant l'étape de peinture du contenu, garantissant que l'arrière-plan de l'élément superposé apparaît sous son contenu.

Dans notre exemple, l'ajout d'opacité : 0,9999 au deuxième div conduit au comportement attendu, où le fond vert recouvre complètement le contenu du premier div.

Référence

Pour une explication détaillée de l'ordre des peintures CSS, reportez-vous au site officiel du W3C. documentation :

https://www.w3.org/TR/css-backgrounds-3/#box-painting

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal