摘要:此時(shí)可能會(huì)對(duì)周圍的布局產(chǎn)生影響,所以清除浮動(dòng),顯得十分重要。主要的方法一使用屬性添加偽元素通過(guò)在父元素后面添加一個(gè)偽元素,設(shè)置為并清除左右浮動(dòng)解決問題。目前這個(gè)方法是最新的??偨Y(jié)如上所述,清除浮動(dòng)有兩大方法,使用屬性和建立。
背景
當(dāng)一個(gè)父元素包含的子元素都設(shè)置為float的時(shí)候,父元素的高度會(huì)出現(xiàn)坍塌的現(xiàn)象(見下圖)。此時(shí)可能會(huì)對(duì)周圍的布局產(chǎn)生影響,所以清除浮動(dòng),顯得十分重要。
通過(guò)在父元素后面添加一個(gè)偽元素,設(shè)置為 block并清除左右浮動(dòng)解決問題。目前這個(gè)方法是最新的。
.container::after { content:" "; display:block; clear:both; }
可能有些代碼有添加::before,且display:table
.container::after,.container::before{ content:" "; display:table; } .container::after{ clear:both; }
實(shí)際上添加的部分跟浮動(dòng)并沒有關(guān)系,他們的作用是防止子元素的margin-top發(fā)生重疊。
但添加::before就必須將display設(shè)置為table。主要原理:display設(shè)置為table時(shí)會(huì)出現(xiàn)一個(gè)匿名表格單元格(anonymous table-cell),從而創(chuàng)建一個(gè)新的BFC(下文會(huì)提及),根據(jù)BFC的布局規(guī)則,會(huì)使margin-top不重疊。這里只是解釋說(shuō)明有些代碼出現(xiàn)這種寫法的原因,如果沒有防止重疊的需求,完全可以精簡(jiǎn)代碼,使用上一種寫法。
有時(shí)還會(huì)在代碼的最后寫上
.container { zoom:1; /* For IE 6/7 (trigger hasLayout) */ }
這里主要是為了兼容IE6/7.
還有一種相似的做法
.clearfix:after{ display: block; clear: both; content: ""; visibility: hidden; height: 0; } .clearfix{ zoom:1; }
將display設(shè)置為block是因?yàn)?b>:after是偽元素,要想獲得clear屬性必須將他轉(zhuǎn)換為block。添加visibility: hidden;height: 0;是讓包含塊末端看起來(lái)不那么亂,所以就直接隱藏起來(lái)。
2、添加標(biāo)簽最簡(jiǎn)單除粗暴的方法就是直接在包含塊末端添加一個(gè)標(biāo)簽,并且使用clear屬性。
但這種做法在HTML中語(yǔ)義不明確,一旦代碼量增加,后期比較難維護(hù)。慎用!
二、觸發(fā)浮動(dòng)元素父元素的BFC(什么是BFC?之前寫的另一篇文章視覺格式化模型之BFC) 1、使用overflow屬性.container { overflow: hidden; /* Clearfix! */ zoom: 1; /* Triggering "hasLayout" in IE */ display: block; /* Element must be a block to wrap around contents. Unnecessary if only using block-level elements. */ }
這里主要是將overflow設(shè)置為非visible值,建立一個(gè)BFC,根據(jù)BFC的布局規(guī)則將浮動(dòng)子元素包含進(jìn)來(lái)。需要注意的是,container 里面的內(nèi)容是否有溢出的風(fēng)險(xiǎn)。
2、使用float屬性直接將包含塊設(shè)置為float。即可建立BFC。但這種做法不推薦,因?yàn)檎w浮動(dòng)會(huì)影響其他的布局。
總結(jié)如上所述,清除浮動(dòng)有兩大方法,使用clear屬性和建立BFC。圍繞這兩方面可以使用很多小技巧。這里只是羅列幾個(gè)常見的方法,并詳細(xì)解釋每條語(yǔ)句的作用,雖然有點(diǎn)啰嗦,但重在理解。如果有更好的方法也歡迎補(bǔ)充。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/115476.html
摘要:為了實(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è)的正常流...
摘要:寫在前面浮動(dòng)是中一個(gè)相對(duì)比較麻煩的屬性,與之伴隨的通常是清除浮動(dòng)。清除浮動(dòng)因此,當(dāng)我們用到了浮動(dòng),又不想出現(xiàn)這種情況的時(shí)候,就需要清除浮動(dòng)。因此,注意浮動(dòng)的使用場(chǎng)景,并且在需要的時(shí)候清除浮動(dòng),就可以很好的控制浮動(dòng)啦 寫在前面 浮動(dòng)是CSS中一個(gè)相對(duì)比較麻煩的屬性,與之伴隨的通常是清除浮動(dòng)。今天我們一起來(lái)搞定浮動(dòng)。 常見的用法 事實(shí)上,當(dāng)我們將一個(gè)元素設(shè)置成浮動(dòng)時(shí),達(dá)到的效果如下圖: s...
摘要:會(huì)在元素內(nèi)容而不是元素后插入一個(gè)偽元素使用意味著中新增的子元素會(huì)被清除左右浮動(dòng)元素。這一篇主要介紹了盒子模型,浮動(dòng)和清除。 這是CSS設(shè)計(jì)指南的讀書筆記,用于加深學(xué)習(xí)效果。 上一篇介紹了css 的工作原理,這一篇主要介紹盒子模型和浮動(dòng)。 盒子模型 所謂盒子模型,就是瀏覽器為頁(yè)面中的每個(gè)HTML元素生成的矩形盒子。這些盒子們都要按照可見版式模型在頁(yè)面上排布。 可見的頁(yè)面版式主要由三個(gè)屬性...
摘要:會(huì)在元素內(nèi)容而不是元素后插入一個(gè)偽元素使用意味著中新增的子元素會(huì)被清除左右浮動(dòng)元素。這一篇主要介紹了盒子模型,浮動(dòng)和清除。 這是CSS設(shè)計(jì)指南的讀書筆記,用于加深學(xué)習(xí)效果。 上一篇介紹了css 的工作原理,這一篇主要介紹盒子模型和浮動(dòng)。 盒子模型 所謂盒子模型,就是瀏覽器為頁(yè)面中的每個(gè)HTML元素生成的矩形盒子。這些盒子們都要按照可見版式模型在頁(yè)面上排布。 可見的頁(yè)面版式主要由三個(gè)屬性...
摘要:隨堂筆記三關(guān)于背景圖片設(shè)置背景圖片圖片的路徑背景圖片位置方位名詞背景位置如果只設(shè)置一個(gè)方位詞,另外一個(gè)默認(rèn)居中如果設(shè)置的值是兩個(gè)方位詞,與順序無(wú)關(guān)數(shù)值背景位置如果設(shè)置的值是數(shù)字一個(gè)值得時(shí)候,表示水平方向的位移,垂直方向默認(rèn)居中兩個(gè)值得Css隨堂筆記(三) 1 關(guān)于背景圖片 ? A 設(shè)置背景圖片:background-image:url(圖片的路徑); ? B 背景圖片位置: backgrou...
閱讀 5668·2021-11-25 09:43
閱讀 1805·2021-10-27 14:18
閱讀 1146·2021-09-22 16:03
閱讀 1451·2019-08-30 13:19
閱讀 1656·2019-08-30 11:15
閱讀 1932·2019-08-26 14:04
閱讀 3232·2019-08-23 18:40
閱讀 1243·2019-08-23 18:17