輕松搞懂CSS浮動與清除浮動圖文詳解

一、float(浮動)是什么
float 屬性定義元素在哪個方向浮動。
float:left 元素向左浮動。
float:right 元素向右浮動。
float:none 默認(rèn)值。元素不浮動,并會顯示在其在文本中出現(xiàn)的位置。
float:inherit 規(guī)定應(yīng)該從父元素繼承 float 屬性的值。
看一段簡單的代碼:
<div class="child1">左浮動</div> <div class="child2">右浮動</div> <div class="child3">喵</div> .child1 { float: left; height: 500px; width: 70%; background: #aa0;//黃 } .child2 { float: right; height: 300px; width: 30%; background: #0aa;//青 } .child3 { background: #a0a;//紫 }
二、clear是什么
clear 屬性指定段落的左側(cè)或右側(cè)不允許浮動的元素。
clear:left 在左側(cè)不允許浮動元素。
clear:right 在右側(cè)不允許浮動元素。
clear:both 在左右兩側(cè)均不允許浮動元素。
clear:none 默認(rèn)值。允許浮動元素出現(xiàn)在兩側(cè)。
clear:inherit 規(guī)定應(yīng)該從父元素繼承 clear 屬性的值。
比如上面的例子,我們?yōu)?child3 加上 clear: both; ,便可清除浮動。(child3的左右兩側(cè)都不允許浮動元素,自然而然不會再跟在倆浮動元素的屁股后面了~)
那么,只在一側(cè)不允許浮動是怎樣的呢?
本來是醬紫的:
<div class="child1">child1右浮動</div> <div class="child2">child2右浮動</div> 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈... .child1 { float: right; background: #aa0;//黃 } .child2 { float: right; background: #0aa;//青 }
然后,為 child2 加上 clear: right; ,在child2的右側(cè)不允許浮動元素,所以child2就飄到了下一行。
那么,為 child1 加上 clear: left; 的時候,為什么不起效果呢?在這留個小彩蛋,歡迎大家留言討論~
三、浮動帶來的影響
浮動帶來的最大影響就是,當(dāng)父元素只包含浮動的子元素的時候,父元素的高度就會塌陷( height 變?yōu)?0 )。
像醬紫:(parent高度為0,無法顯示粉色背景) <div class="parent"> <div class="child1">child1右浮動</div> <div class="child2">child2右浮動</div> </div> .parent { background: #FBC;//粉 }
四、清除浮動的方式
1. 在父元素中的結(jié)尾加一個空 div
div
<div class="parent"> <div class="child1">child1右浮動</div> <div class="child2">child2右浮動</div> <div style="clear: both;"></div> </div> .child1 { float: right; background: #aa0; } .child2 { float: right; background: #0aa; }
可見,空 div 高度為0,位于父盒子的最下面,使父盒子重新?lián)纹鹆藨?yīng)有的高度。
為什么要在最后加?倘若你在中間加,效果會是醬紫:
由于空 div 的左右都不允許浮動元素,那么它就會另起一段,導(dǎo)致盒子位置的效果就像 child2 清除右側(cè)浮動一樣, child2 跑到了 child1 下方。
2. 在父元素設(shè)置 overflow 屬性
• 原理:設(shè)置 overflow:hidden 或 overflow:auto ,瀏覽器會自動檢查浮動區(qū)域高度(才能知道父框的內(nèi)容有無溢出)
•優(yōu)點(diǎn):瀏覽器支持好
•缺點(diǎn):子元素若超出父元素尺寸會被隱藏,或者父元素出現(xiàn)滾動條
<div class="parent" style="overflow:hidden;"> <div class="child1">child1右浮動</div> <div class="child2" style="position:relative;top:10px;">child2右浮動</div> </div>
當(dāng)設(shè)置 overflow:auto; 時,父元素會出現(xiàn)滾動條:
3.偽元素
•原理:類似設(shè)置clear屬性
•優(yōu)點(diǎn):瀏覽器支持好,普遍
<div class="parent clearfix"> <div class="child1">child1右浮動</div> <div class="child2">child2右浮動</div> </div> .clearfix{ zoom: 1; //zoom(IE專有屬性)可解決ie6,ie7浮動問題 display: block; } .clearfix:after { content: "."; //content: "";也可 visibility: hidden; display: block; height: 0; clear: both; }
總結(jié)
以上所述是小編給大家介紹的輕松搞懂CSS浮動與清除浮動,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
- 這篇文章主要介紹了CSS 清除浮動、BFC的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-23
css overflow: hidden 的用法(溢出隱藏及清除浮動)
overflow:hidden是經(jīng)常用到的一個css屬性,它有兩種常用用法:溢出隱藏和清除浮動,這里就為大家介紹一下,需要的朋友可以參考下2020-03-13- 這篇文章主要介紹了CSS實(shí)現(xiàn)元素浮動和清除浮動的方法,簡單介紹了浮動的基本知識,通過截圖代碼的形式給大家介紹了css清除浮動的方法,需要的朋友可以參考下2019-12-05
- 這篇文章主要介紹了Css實(shí)現(xiàn)清除浮動的方法匯總,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-11
- 塊級格式化上下文,是一個獨(dú)立的渲染區(qū)域,讓處于 BFC 內(nèi)部的元素與外部的元素相互隔離,使內(nèi)外元素的定位不會相互影響。這篇文章給大家介紹了CSS 使用偽元素清除浮動的方2019-07-01
- 這篇文章主要介紹了css 如何清除浮動的示例代碼,詳細(xì)的介紹了浮動到底是什么和清理浮動的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看2018-11-12
- 本文通過多種方法給大家介紹CSS清楚浮動clear:both的實(shí)例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-11-16