摘要:以下情況會(huì)觸發(fā)根元素的值不為的值為,,的值為,和中的任何一個(gè)的值不為和顯然我們?cè)谠O(shè)置值為時(shí)使元素具有,那么子元素浮動(dòng)便不會(huì)帶來(lái)父元素的高度坍塌影響。
1.問題起源
在平時(shí)的業(yè)務(wù)開發(fā)寫CSS中,為了滿足頁(yè)面布局,元素的浮動(dòng)特性我們用的不能再多了。使用浮動(dòng)的確能夠解決一些布局問題,但是也帶了一些副作用影響,比如,父元素高度塌陷,我們有好幾種可以清除浮動(dòng)的方法,最常用的就是設(shè)置父元素的overflow:hidden這個(gè)屬性,每次在寫代碼的時(shí)候總是這樣寫,但是,自己從沒深度思考過(guò)這些寫為什么能夠清除浮動(dòng),最近,自己也查閱了一些資料,談?wù)勛约旱睦斫狻?/p>
2.情景再現(xiàn)
先上代碼:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮動(dòng)title>
<style>
.container{
border: 1px solid #000;
background: #0f0;
}
.child{
float: left;
}
style>
head>
<body>
<div class="container">
<div class="child">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam dolorem eligendi laudantium libero magnam magni numquam voluptas voluptatem voluptatibus? Consequuntur delectus dolorem esse explicabo minus neque non quaerat voluptatum!
div>
div>
body>
html>
??代碼很簡(jiǎn)單,就是父元素container里面包含了一個(gè)子div元素child,然后我們使子元素的div向左浮動(dòng),頁(yè)面展示效果如下:
結(jié)果來(lái)看,父元素只顯示了四個(gè)方向邊框的高度,背景顏色未顯示,這是因?yàn)樽釉馗?dòng)脫離文檔流造成父元素高度塌陷。
3.解決方法
**
.container{
border: 1px solid #000;
background: #0f0;
overflow: hidden;
}
**
?只在container父元素加了一行overflow:hidden
頁(yè)面展示效果如下:
父元素高度被撐起來(lái)了,背景顏色也顯示出來(lái)了。
4.BFC概念
我們先了解一個(gè)名詞:BFC(block formatting context),中文為“塊級(jí)格式化上下文”。
先記住一個(gè)原則:如果一個(gè)元素具有BFC,那么內(nèi)部元素再怎么翻江倒海,翻云覆雨,都不會(huì)影響外面的元素。所以,BFC元素是不可能發(fā)生margin重疊的,因?yàn)閙argin重疊會(huì)影響外面的元素的;BFC元素也可以用來(lái)清楚浮動(dòng)帶來(lái)的影響,因?yàn)槿绻磺宄?,子元素浮?dòng)則會(huì)造成父元素高度塌陷,必然會(huì)影響后面元素的布局和定位,這顯然有違BFC元素的子元素不會(huì)影響外部元素的設(shè)定。
以下情況會(huì)觸發(fā)BFC:
顯然我們?cè)谠O(shè)置overflow值為hidden時(shí)使container元素具有BFC,那么子元素child浮動(dòng)便不會(huì)帶來(lái)父元素的高度坍塌影響。
5.總結(jié)
設(shè)置overflow為hidden使元素具有BFC而不會(huì)受子元素的影響,但是當(dāng)子元素過(guò)多需要滾動(dòng)顯示時(shí),我們可以設(shè)置overflow的值為auto或acroll,超出父元素之外的元素會(huì)被隱藏。使用overflo:hidden也具有一定的局限性,所以我們應(yīng)該根據(jù)具體的業(yè)務(wù)場(chǎng)景來(lái)選擇合適的方法。
?參考資料:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/1499.html
摘要:包裹性所謂包裹性,其實(shí)是由包裹和自適應(yīng)兩部分組成。官方對(duì)屬性的解釋是元素盒子的邊不能和前面的浮動(dòng)元素相鄰。清除高度塌陷的問題在上面的章節(jié)中,如果子元素設(shè)置浮動(dòng)屬性,則父元素就會(huì)出現(xiàn)高度塌陷的問題。 float屬性是CSS中常用的一個(gè)屬性,在實(shí)際工作中使用的非常多,如果使用不當(dāng)就會(huì)出現(xiàn)意料之外的效果。雖然很多人說(shuō)浮動(dòng)會(huì)用就行、浮動(dòng)過(guò)時(shí)了,但是對(duì)于優(yōu)秀的前端開發(fā)人員,需要有刨根問底的精神,...
css浮動(dòng)現(xiàn)象及清除浮動(dòng)的方法 ? 首先先明確浮動(dòng)最初的定義及使用場(chǎng)景:實(shí)現(xiàn)文本環(huán)繞圖片的效果。 除了用浮動(dòng)外,目前暫無(wú)其他方法實(shí)現(xiàn)文本環(huán)繞 showImg(https://segmentfault.com/img/remote/1460000016137003?w=838&h=382); ? 再來(lái)看看浮動(dòng)的具體定義: 浮動(dòng)的框可以左右移動(dòng),直至它的外邊緣遇到包含框或者另一個(gè)浮動(dòng)框的邊緣。浮動(dòng)框不...
css浮動(dòng)現(xiàn)象及清除浮動(dòng)的方法 ? 首先先明確浮動(dòng)最初的定義及使用場(chǎng)景:實(shí)現(xiàn)文本環(huán)繞圖片的效果。 除了用浮動(dòng)外,目前暫無(wú)其他方法實(shí)現(xiàn)文本環(huán)繞 showImg(https://segmentfault.com/img/remote/1460000016137003?w=838&h=382); ? 再來(lái)看看浮動(dòng)的具體定義: 浮動(dòng)的框可以左右移動(dòng),直至它的外邊緣遇到包含框或者另一個(gè)浮動(dòng)框的邊緣。浮動(dòng)框不...
摘要:為了實(shí)現(xiàn)這個(gè)效果,我們需要清除浮動(dòng)。元素被向下移動(dòng)用于清除之前的左右浮動(dòng)。塊格式化上下文對(duì)浮動(dòng)定位與清除浮動(dòng)都很重要。浮動(dòng)定位和清除浮動(dòng)時(shí)只會(huì)應(yīng)用于同一個(gè)內(nèi)的元素。且為了不影響接下來(lái)的文檔標(biāo)準(zhǔn)流,往往也要收尾做出清除浮動(dòng)。以下從浮動(dòng)到BFC的段落 摘自MDN 網(wǎng)絡(luò)開發(fā)者float 浮動(dòng)float CSS屬性指定一個(gè)元素應(yīng)沿其容器的左側(cè)或右側(cè)放置,允許文本和內(nèi)聯(lián)元素環(huán)繞它。該元素從網(wǎng)頁(yè)的正常流...
閱讀 2257·2023-05-11 16:55
閱讀 3541·2021-08-10 09:43
閱讀 2654·2019-08-30 15:44
閱讀 2473·2019-08-29 16:39
閱讀 614·2019-08-29 13:46
閱讀 2040·2019-08-29 13:29
閱讀 953·2019-08-29 13:05
閱讀 719·2019-08-26 13:51