Maison >interface Web >tutoriel CSS >Pourquoi les marges ne fonctionnent-elles pas sur les divs avec « display: table-cell; » ?

Pourquoi les marges ne fonctionnent-elles pas sur les divs avec « display: table-cell; » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 09:16:10350parcourir

Why Don't Margins Work on divs with `display: table-cell;`?

Pourquoi les divs ne peuvent-ils pas être effectués avec "display: table-cell;" Appliquer des marges ?

En HTML, les divs sont des éléments adjacents qui peuvent être organisés à l'aide des paramètres de mise en page CSS tels que « affichage ». Lors de l'attribution de "display: table-cell;", ces divs se comportent comme des cellules dans un tableau et héritent de propriétés spécifiques. L'une de ces propriétés est l'inefficacité de la propriété margin.

Cause : Incompatibilité avec "display: table-cell;"

Selon la documentation MDN, margin n'est pas applicable aux éléments avec des types d'affichage de table autre que "table-caption", "table" et "inline-table". "affichage : cellule-tableau ;" relève de cette exception, ce qui la rend incompatible avec margin.

Solution : propriété Border-Spacing

Au lieu d'utiliser margin, envisagez d'appliquer border-spacing pour obtenir un espacement entre les divs. Cependant, cette propriété doit être appliquée à un élément parent avec une disposition "display: table" et "border-collapse: séparer".

Exemple :

HTML :

<div class="table">
  <div class="row">
    <div class="cell">123</div>
    <div class="cell">456</div>
    <div class="cell">879</div>
  </div>
</div>

CSS :

.table {
  display: table;
  border-collapse: separate;
  border-spacing: 5px;
}

.row {
  display: table-row;
}

.cell {
  display: table-cell;
  padding: 5px;
  border: 1px solid black;
}

Voir jsFiddle Démo

Variation de la marge sur les axes horizontal et vertical

Comme mentionné par Diego Quieros, l'espacement des bordures prend en charge deux valeurs pour créer des marges différentes pour les axes horizontal et vertical.

Exemple :

.table {
  /*...*/
  border-spacing: 3px 5px; /* 3px horizontally, 5px vertically */
}

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!

Déclaration:
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