Quel est le processus de calcul du pourcentage de marge maximale ?
P粉921130067
P粉921130067 2023-09-17 09:16:25
0
2
531

Je sais que cela devrait être simple, mais quelqu'un peut-il me dire pourquoi les éléments enfants du code suivant s'étendent au-delà des limites du conteneur parent lorsquemargin-top: 50%est appliqué ? Comment est calculé le pourcentage de marge supérieure ?

.container { background: lightblue; padding: 10px; height: 200px; } p { display: block; border:1px solid red; margin-top:50%; }

Some Cool content

L'élément enfant ne devrait-il pas être à 50 % de 200 px (hauteur définie par l'élément parent) du haut de l'élément parent, soit 100 px du haut ?

P粉921130067
P粉921130067

répondre à tous (2)
P粉642919823

Les marges basées sur un pourcentage sont calculées en fonction de lalargeurdu conteneur parent, quel que soit le côté de la marge.

Donc ce que vous voyez, c'est que la marge supérieure est égale à 50 % de la largeur.

    P粉509383150

    De laspécification W3C:

    Il y a deux bonnes raisons de baser les marges verticales sur la largeur du bloc contenant :

    Cohérence horizontale et verticale

    Bien sûr, il existe une propriété raccourcie qui permet de préciser les marges sur les quatre côtés du bloc :

    margin: 10%;

    Cela s'étend à :

    margin-top: 10%; margin-right: 10%; margin-bottom: 10%; margin-left: 10%;

    Maintenant, si vous avez écrit l'une des choses ci-dessus, vous vous attendiez probablement à ce que les marges soient de taille égale sur les quatre côtés du bloc, n'est-ce pas ? Cependant, si margin-left et margin-right sont basés sur la largeur du conteneur, et margin-top et margin-bottom sont basés sur sa hauteur, ils seront généralement différents !

    Évitez les dépendances circulaires

    CSS présente le contenu en blocs empilés verticalement sur la page, de sorte que la largeur d'un bloc est généralement entièrement déterminée par la largeur de son élément parent. En d’autres termes, vous pouvez calculer la largeur du bloc sans vous soucier du contenu à l’intérieur du bloc.

    La hauteur du bloc est une autre affaire. Généralement, la hauteur est déterminée par la hauteur combinée de son contenu. Changer la hauteur du contenu modifiera la hauteur du bloc. Voyez-vous le problème?

    Pour obtenir la hauteur du contenu, vous devez connaître les marges supérieure et inférieure qui lui sont appliquées. Si ces marges dépendent de la hauteur du bloc parent, alors vous avez des problèmes car vous ne pouvez pas calculer l'une sans connaître l'autre !

    Les marges verticales basées sur la largeur du conteneur brisent cette dépendance circulaire et rendent la mise en page possible.

    Exemple :

    Ceci est un exemple. Et le code :

    HTML

    一些很酷的内容

    更多文本

    CSS

    .container { background: lightblue; padding: 10px; height: 100px; width: 500px; } p { display: block; border: 1px solid red; margin-top: 50%; }

    JS

    window.onload = function(evt) { var element = document.getElementById("element"), style = element.currentStyle || window.getComputedStyle(element); element.textContent = "margin-top是:" + style.marginTop; };
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!