BFC之宽度自适应布局篇_html/css_WEB-ITnose
说到自适应布局,我们曾在“抛砖引玉之宽度自适应布局”一文中学习过。当时的核心思想主要是利用float+margin的形式。利用块状元素的流体特性,然后计算出float元素的宽度,并赋予到块状元素的相应margin中。但是这么做是有个缺点的,就是我们每次都得知道float元素的宽度,然后赋予到块状元素的margin。
然而,我们在”BFC之浅析篇”中学习到BFC有一特性:BFC的区域不会与外部浮动元素重叠。并且利用了这一特性,实现了两栏自适应布局。我们再来回顾下。
<!DOCTYPE html> <head> <title>BFC</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> .leftDiv { width:100px; height:100px; background:green; float:left; } .normalDiv { height:100px; background:pink; /*添加overflow:hidden,触发元素BFC*/ overflow:hidden; } </style> </head> <body> <div class="leftDiv"></div> <div class="normalDiv"> </div> </body></html>
运行代码,截图为下
可以看见浮动元素(绿色方块)与div.noramDiv元素的确木有发生重叠,而且我也没有加margin哦。
你也可以自己运行下上述代码,伸缩页面宽度,可以发现也的确是自适应滴。
(PS:上面所示的BFC实现两栏自适应的例子,可以和“float实例讲解”对比学习下,效果会更加哦。)
我们上面是利用的overflow:hidden;来触发div.normalDiv的BFC。在“BFC之浅析篇”中,我们学习到要触发元素成为BFC,有如下几种方法:
1、 float属性不为none
2、 position为absolute或fixed
3、 overflow的值不为visible
4、 display的值为table-cell,table-caption,inline-block中的任何一个。
抛开第三点,overflow的值不为visible,其他几种也适合实现BFC自适应布局?
当然不是咯。
首先,针对第一点float,由于float触发元素BFC后,自身float又带有特性,如将元素包裹化了,破坏了块级元素的流体性,所以不能用来自适应布局。
针对第二点position,又由于position将元素脱离文档流比较严重,因此,更加不能用来自适应布局。
针对,第四点中 display:table-cell,当你设置一个比宽度无线大时,它也不会超过它容器的宽度。
啧啧啧!这不就完美了么。那么我们设置它的宽度为很大很大时,也就可以用来自适应布局了嘛。
看看如下代码
<!DOCTYPE html> <head> <title>BFC</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> .leftDiv { width:100px; height:100px; background:green; float:left; } .normalDiv { height:100px; background:pink; /*添加display:table-cell,且将宽度设置为很大,如9000px*/ display:table-cell; width:9000px; } </style> </head> <body> <div class="leftDiv"></div> <div class="normalDiv"></div> </body></html>
运行代码后,效果图见上。
ps:自己运行后的体会更深哦,然后伸缩浏览器,哈哈哈,试了就知道,是可以的哦。
针对第四点中的display:table-caption,直接滤过!
针对第四点钟的display:inline-block,由于和float一样具有包裹性,所以滤过。但是,我们曾在"BFC之清除浮动篇&clear"中提到过IE6、7有个hasLayout嘛,在IE6、7中它可是具有流体特性的哦。所以可以解决IE6、7的自适应布局。代码如下
.floatElm { float: left;}.bftContent { display: inline-block;}
so, 对触发BFC的方法,能用在自适应布局中的方法如下
overflow(hidden/auto) | 缺点: 1、 overflow:hidden当内容过多时,带有剪裁功能 2、 overflow:auto当内容过多时,会出现滚动条 |
display:inline-block | 缺点: 只适用于IE6、7 |
display:table-cell | 缺点: 只适用于IE8+和其他浏览器 |
终上所述,我们可以得到利用BFC实现自适应布局的通用方法如下:
.floatElm { float:left;}.bfcContent { display:table-cell; width:9000px;/*宽度大到屏幕宽度即可*/ /*hack手段,针对IE6、7*/ *display:inline-block; *width:auto;}
好了,我们利用这个方法来实现实现三栏布局玩玩。代码如下:
<!-- 左右宽度为100px,中间自适应--><!DOCTYPE html> <head> <title>BFC</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> .floatLeft,.floatRight { width:100px; height:100px; } .floatLeft { /*左浮动触发BFC*/ float:left; background:green; } .floatRight { /*右浮动触发BFC*/ float:right; background:yellow; } .bfcContent { /*table-cell触发BFC*/ display:table-cell; width:9000px;/*宽度大到屏幕宽度即可*/ /*hack手段,针对IE6、7*/ *display:inline-block; *width:auto; height:100px; background:pink; } </style> </head> <body> <div class="floatLeft"></div> <div class="floatRight"></div> <div class="bfcContent bfcContentStl"></div> </body></html>
不信,自己运行代码,拉动浏览器看看啦。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

L'article traite du & lt; iframe & gt; L'objectif de Tag dans l'intégration du contenu externe dans les pages Web, ses utilisations courantes, ses risques de sécurité et ses alternatives telles que les balises d'objet et les API.

L'article traite de la balise Meta de la fenêtre, essentielle pour la conception Web réactive sur les appareils mobiles. Il explique comment une utilisation appropriée garantit une mise à l'échelle optimale du contenu et une interaction utilisateur, tandis que la mauvaise utilisation peut entraîner des problèmes de conception et d'accessibilité.

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit
