Maison > interface Web > tutoriel HTML > le corps du texte

Qu'est-ce que BFC ? Une compréhension simple de bfc

零下一度
Libérer: 2017-07-02 09:38:13
original
12076 Les gens l'ont consulté

Introduction

Avant de parler de BFC, jetons un œil à un exemple

 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     
 <meta charset="UTF-8"> 5     <title>BFC</title> 6     
 <style type="text/css"> 7         
 .div1 {background-color: #FCE38A; width: 200px; height: 100px;} 8         
 .div2 {background-color: #EAFFD0; width: 200px; height: 100px;} 9         
 .div3 {background-color: #95E1D3; width: 200px; height: 100px;}10     
 </style>11 </head>12 13 <body>14     <div class="div1">div1</div>15     
 <div class="div2">div2</div>16     <div class="div3">div3</div>17 </body>18 
 </html>
Copier après la connexion

Comme vous pouvez le constater , le bloc L'ordre des éléments de niveau est de haut en bas Même si la largeur de la ligne peut accueillir plusieurs éléments, ajoutez maintenant des marges à div1 et div2 en même temps

<.>

À l'origine, la marge inférieure de div1 est de 50px et la marge supérieure de div2 est de 50px. Logiquement, la distance entre eux devrait être de 100px, mais ici elle n'est que de 50px. un contexte de mise en page au niveau du bloc La marge verticale entre deux boîtes adjacentes au niveau du bloc est réduite, ce qui correspond à la fusion de marge introduite dans

Note d'étude CSS 07 Modèle de boîte Comment résoudre ce problème. ? Qu'en est-il du phénomène de fusion des marges ? Cela implique le BFC qui sera présenté ci-dessous.

Qu'est-ce que BFC

Les contextes de formatage de bloc sont un contexte de formatage au niveau du bloc. Il s'agit d'une zone de rendu indépendante, uniquement une boîte au niveau du bloc. Participation, elle stipule comment la boîte interne au niveau du bloc (élément avec les attributs d'affichage du bloc, de l'élément de liste, du tableau) est disposée et n'a rien à voir avec l'extérieur de cette zone. Parmi eux, le contexte de formatage est un conteneur qui détermine comment restituer le document. Le contexte de formatage est un concept de la spécification CSS2.1 du W3C. Il s'agit d'une zone de rendu sur la page et comporte un ensemble de règles de rendu qui déterminent la manière dont ses sous-éléments seront positionnés ainsi que leurs relations et interactions avec d'autres éléments. Les contextes de formatage les plus courants sont le contexte de formatage en bloc (BFC) et le contexte de formatage en ligne (IFC). Il n'y a que BFC et IFC dans CSS2.1, et GFC et FFC sont également ajoutés dans CSS3.

En termes simples, BFC est une boîte indépendante, et la disposition dans cette boîte indépendante n'est pas affectée par l'extérieur. Bien sûr, cela n'affectera pas les éléments externes.

Lorsque la présentation du document démarre, un BFC sera automatiquement créé pour disposer la page entière. Lorsqu'un nouveau BFC n'est pas créé, le document entier sera ce BFC.

Règles BFC

  • Les cases internes seront placées les unes après les autres dans le sens vertical, en commençant par le haut (comme le montre l'exemple ci-dessus)

  • Dans le même BFC, dans deux éléments adjacents au niveau du bloc, la marge verticale s'effondrera

  • Le côté gauche de la zone de marge de chaque élément , et Les côtés gauches de la bordure du bloc conteneur se touchent (pour un formatage de gauche à droite, sinon l'inverse), même s'il y a un flottant

  • La zone de​ ​BFC ne chevauchera pas la float box

  • BFC est un conteneur indépendant isolé sur la page. Les sous-éléments à l'intérieur du conteneur n'affecteront pas les éléments extérieurs et vice versa

    .

  • Calcul Lorsque la hauteur de BFC est calculée, les éléments flottants participent également au calcul

déclenche BFC

  • élément racine

  • L'attribut float n'est pas nul (tel que : gauche | droite)

  • La valeur du débordement n'est pas visible (telle que as : caché | défilement automatique)

  • La valeur de l'attribut d'affichage est inline-block | inline-flex | table-caption

  • la position est absolue ou fixe

Appliquer BFC

Résoudre le problème de superposition de marge

C'est toujours l'exemple ci-dessus, car les éléments de la page est dans un flux standard à ce moment, donc l'élément body est un BFC à ce moment, selon les règles

同一个BFC中,在两个相邻的块级元素中,垂直margin会发生折叠
Copier après la connexion
Définissez maintenant l'attribut display:inline-block à div1

À ce moment Puisque l'élément div1 déclenche BFC via display:inline-block, div1 est un BFC indépendant à ce moment . Selon les règles

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
Copier après la connexion
, il n'y aura pas de chevauchement de marge pour le moment.

Effacer les flotteurs internes

Lorsque tous les éléments enfants d'une boîte dans un flux standard flottent et qu'aucune hauteur n'est définie pour la boîte, alors toute la hauteur de la boîte s'effondrera. ça veut dire ? Regardez l'exemple ci-dessous

 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>BFC清除内部浮动</title> 6     <style type="text/css"> 7         .child {background-color: #95E1D3; border: 1px solid #FCE38A; width: 100px; height: 100px;} 8         .parent {width: 300px; border: 1px solid #95E1D3;} 9     </style>10 </head>11 <body>12     <div class="parent">13         <div class="child"></div>14         <div class="child"></div>15     </div>16 </body>17 </html>
Copier après la connexion

Le conteneur parent est pris en charge par deux divs enfants. 🎜 >

À ce stade, le conteneur parent est devenu deux lignes qui se chevauchent, c'est-à-dire que la hauteur est devenue 0, ce qui est le soi- appelé hauteur Réduire. Selon le règlement

这时候可以触发parent生成BFC,那么parent在计算高度时,parent内部的浮动元素child也会参与计算

布局

 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>BFC布局</title> 6     <style type="text/css"> 7         .left {width: 100px; height: 100px; background-color: #FCE38A; float: left;} 8         .right {width: 300px; height: 150px; background-color: #95E1D3;} 9 10     </style>11 </head>12 <body>13     <div class="left"></div>14     <div class="right"></div>15 </body>16 </html>
Copier après la connexion

根据规则

每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此
Copier après la connexion

所以即使left设置了左浮动,right的的左边依然会与包含块的左边(即body)相接触。接着我们可以根据规则

BFC的区域不会与float box重叠
Copier après la connexion

让right触发产生BFC,这样right就不会与left重叠了

这样就形成了常见的两列布局。

总之记住一点BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,同样的,外面的元素也不会影响到容器里面的子元素。

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal