css清浮動

我們在平常做項目的時候,float這個css屬性經常會用到。元素浮動會讓元素脫離文檔流,從而不能撐開父級的內容。今天我將展示常見的清除浮動的方法。

什么是浮動

浮動元素脫離文檔流并且向左或者向右移動,直到浮動元素的邊緣碰到父級框或者另一個浮動元素的邊框為止。

浮動的影響

浮動元素會使得父級元素高度塌陷

html:

<ul><li></li><li></li><li></li>
</ul>

css:

* { // 實際項目中不要用通配符*去設置樣式margin: 0;padding: 0;
}
ul {border: 10px solid red;
}
li {width: 100px;height: 100px;margin-left: 10px;list-style: none;background: orange;float: left;
}

效果圖:

由于浮動元素脫離文檔流,不再占據原來的文檔流空間,不能撐開父級的內容,所以父級的高度就不存在了。

下面我們將介紹清浮動的兩個大類。

清浮動的方法

clear清浮動(clearfix方案)

在css中專門有一個來解決高度塌陷的屬性,那就是我們常用的clear屬性。clear的用法如下:

clear: none | right | left | both | inherit;

下面對clear值的解釋來之w3c

  • none:默認值。允許浮動元素出現在兩側。
  • right:在右側不允許浮動元素。
  • left:在左側不允許浮動元素。
  • both:在左右兩側均不允許浮動元素。
  • inherit:規定應該從父元素繼承 clear 屬性的值。

我們清除浮動的時候常用

clear: both;
注意: clear屬性只對塊級元素起作用。

下面展示一個與clear值為both有關的例子。

html:

<ul><li></li><li></li><li></li><li></li><li></li>
</ul>

css:

* {margin: 0;padding: 0;
}
li {width: 100px;height: 100px;margin-left: 10px;list-style: none;background: orange;float: left;margin-bottom: 10px;
}
li:nth-child(3) {clear: both;
}

上面代碼所渲染出來的效果是下面的圖:

不知道當大家看到這個結果的時候,是不是開始懷疑w3c中的解釋了。實際上clear值為both指的是讓自身和前面的浮動元素不相鄰。沒錯,是前面的,并不是前面后面都兼顧,所以上面的例子中展示的效果是兩列而不是三列。

下面展示使用clear清浮動,接著最開始的代碼,我們對其進行清浮動。(注意下面只展示在最開始代碼中增加的代碼)

css:

ul {zoom: 1;        // 為了兼容IE6/7
}
ul:after {          // 內聯content: '';    // 內容為空字符是為了不影響本來的domdisplay: block; // 這里的值也可以是table | list-item,只要能夠讓偽類成為塊級元素。clear: both;
}

效果圖:

BFC清浮動

BFC的全稱block formatting context,中文意思是“塊級格式化上下文”。

BFC特性

“css世界的結界”(引自張鑫旭的《css世界》),在這個結界中內部子元素不管如何變化都不會對外部的元素有影響。BFC元素的margin不會發生折疊,因為margin折疊影響外部元素的布局。清除浮動,如果BFC不能夠清除浮動,那么BFC元素高度就會塌陷,那么內部的元素就會影響到其他的元素的布局,這跟前面說的BFC元素內部的子元素不會影響外部元素相違背。

BFC的實現:(引自張鑫旭的《css世界》)

  • 根元素
  • float的值非none
  • overflow的值為auto、scroll、hidden
  • display的值為table-cell、table-caption和inline-block
  • position的值不為relative和static

css:

ul {overflow: auto; // 使浮動元素的父級成為BFC就行可以實現清浮動
}

效果如下圖:

大家有可能會有疑問只要一句話實現BFC,那為什么我們還要用上面的clearfix方案?

overflow: auto;
不支持IE6/7。
overflow: hidden;
不支持IE6,使用這個屬性容器外的元素可能被隱藏。

但是,大家想下現在使用IE6/7/8的用戶還有好多。我個人覺得現在我們沒必要去管IE6/7/8,拋棄那部分用戶對于我們的影響微不足道。上面這段話只是個人想法,并沒有想過讓他人必須這樣想,如果大家對這段有什么不滿請輕噴。

最后建議大家不要一味的使用clearfix方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370049.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370049.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370049.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小心緩存管理器

如果使用spring和JPA&#xff0c;則很有可能利用ehcache&#xff08;或其他緩存提供程序&#xff09;。 您可以在兩種不同的情況下進行此操作&#xff1a;JPA 2級緩存和spring方法緩存。 在配置應用程序時&#xff0c;通常會設置JPA提供程序的二級緩存提供程序&#xff08;在我…

DirectX11 學習筆記7 - 支持自由移動的攝像機

如今將又一次制定一個camera攝像機。能夠自由移動。比方前進 后退&#xff0c;上游 下潛。 各個方向渲染之類的。 首先設置按鍵。 這個時候須要在 XWindow.h 里面 bool XWindow::frame() {//推斷是否按下ESC鍵if(x_input->isKeyDown(VK_ESCAPE))return false;//假設A,S,D,W,…

騰訊吃雞 android,騰訊吃雞手游《光榮使命》正式上線:安卓/iOS不限號測試

IT之家11月29日消息 今天下午&#xff0c;騰訊首款百人戰術競技手游《光榮使命》在安卓、iOS雙平臺正式上線&#xff0c;開啟全面測試。(官網下載&#xff1a;點此鏈接&#xff0c;雙平臺已開放下載。)該游戲采用第三人稱射擊視角&#xff0c;玩家化身參與“使命行動”軍事演習…

lazada鋪貨模式的選品_lazada小白的運營難點→鋪貨與精細化運營的優劣勢詳解

lazada是鋪貨還是精細化經營第一種鋪貨鋪貨作為平臺早期都是比較受歡迎的&#xff0c;平臺的蠻荒期&#xff0c;成長期當中&#xff0c;鋪貨的商家是非常受歡迎的&#xff0c;因為平臺需要更多SKU產品&#xff0c;去吸引買家&#xff0c;鋪貨這個時候是最好的也是能最快的成長起…

ife 零基礎學院 day 2

第二天&#xff1a;給自己做一個在線簡歷吧 最后的驗證&#xff0c;提出了幾個問題&#xff0c;嘗試解答一下 HTML是什么&#xff0c;HTML5是什么 HTML的定義摘抄自w3school的HTML 簡介 HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Langua…

excel數據生成sql?insert語句

excel數據生成sql insert語句 excel表格中有A、B、C三列數據&#xff0c;希望導入到數據庫users表中&#xff0c;對應的字段分別是name,sex,age 。 在你的excel表格中增加一列&#xff0c;利用excel的公式自動生成sql語句&#xff0c;方法如下&#xff1a; 1、增加一列&#xf…

Java中的推斷異常

借用和竊取其他語言的概念和想法總是很高興的。 Scala的Option是我真正喜歡的一個主意&#xff0c;因此我用Java編寫了一個實現。 它包裝了一個可能為null或不為null的對象&#xff0c;并提供了一些可按某種功能使用的方法。 例如&#xff0c;isDefined方法添加了一種面向對象的…

重載,覆蓋,隱藏

轉載于:https://www.cnblogs.com/jhcelue/p/7145525.html

Animate.css介紹

Animate.css簡介 animate.css 動畫庫&#xff0c;預設了抖動&#xff08;shake&#xff09;、閃爍&#xff08;flash&#xff09;、彈跳&#xff08;bounce&#xff09;、翻轉&#xff08;flip&#xff09;、旋轉&#xff08;rotateIn/rotateOut&#xff09;、淡入淡出&#x…

logstash 吞吐量優化_1002-談談ELK日志分析平臺的性能優化理念

在生產環境中&#xff0c;我們為了更好的服務于業務&#xff0c;通常會通過優化的手段來實現服務對外的性能最大化&#xff0c;節省系統性能開支&#xff1b;關注我的朋友們都知道&#xff0c;前段時間一直在搞ELK&#xff0c;同時也記錄在了個人的博客篇章中&#xff0c;從部署…

spark SQL(三)數據源 Data Source----通用的數據 加載/保存功能

Spark SQL 的數據源------通用的數據 加載/保存功能 Spark SQL支持通過DataFrame接口在各種數據源上進行操作。DataFrame可以使用關系變換進行操作&#xff0c;也可以用來創建臨時視圖。將DataFrame 注冊為臨時視圖允許您對其數據運行SQL查詢。本節介紹使用Spark Data Sou…

sqlserver日期函數

SQLServer時間日期函數詳解,SQLServer,時間日期, 1. 當前系統日期、時間 select getdate() 2. dateadd 在向指定日期加上一段時間的基礎上&#xff0c;返回新的 datetime 值 例如&#xff1a;向日期加上2天 select dateadd(day,2,2004-10-15) --返回&#xff1a…

榮耀鴻蒙系統開機動畫,榮耀趙明:鴻蒙系統首發設備欲屏蔽開機廣告

來源&#xff1a;硅谷分析獅余承東表示8月9日會發布鴻蒙系統&#xff0c;而從他透露的一些細節看&#xff0c;鴻蒙系統將首先運用在智慧屏終端上&#xff0c;其配合大屏幕和自研芯片(麒麟AI芯片&#xff0c;鴻鵠智慧顯示芯片&#xff0c;凌霄WIFI芯片)&#xff0c;將實現生態上…

編寫Maven插件的提示

最近&#xff0c;我花了很多時間來編寫或為Maven開發插件。 它們簡單&#xff0c;有趣且有趣。 我以為我會分享一些技巧&#xff0c;使他們在編寫時變得更輕松。 提示1&#xff1a;將任務與Mojo分開 最初&#xff0c;您將把mojo的所有代碼放入mojo的類&#xff08;即&#xf…

oracle通信通道的文件結尾_ORA-03113:通信通道的文件結尾解決

提示ORA-03113&#xff1a;通信通道的文件結尾解決事情原由&#xff1a;oracle安裝到win7下&#xff0c;以為都是直接sqlplus / as sysdba&#xff0c;使用數據庫&#xff0c;但最近連接時頻繁報錯&#xff0c;提示ORA-03113&#xff1a;通信通道的文件結尾進程 ID &#xff1a…

Python_迭代器與生成器

迭代器 迭代是Python最強大的功能之一&#xff0c;是訪問集合元素的一種方式。。 迭代器是一個可以記住遍歷的位置的對象。 迭代器對象從集合的第一個元素開始訪問&#xff0c;直到所有的元素被訪問完結束。迭代器只能往前不會后退。 迭代器有兩個基本的方法&#xff1a;iter()…

JSOI 2009 BZOJ 1444 有趣的游戲

題面 題目描述 小陽陽發明了一個有趣的游戲&#xff1a;有n個玩家&#xff0c;每一個玩家均有一個長度為 l 的字母序列&#xff0c;任何兩個玩家的字母序列不同。共有m種不同的字母&#xff0c;所有的字母序列都由這m種字母構成&#xff0c;為了方便&#xff0c;我們取大寫字母…

html語言dl與ul,HTML中DL、UL、OL用哪個比較好

大家好~ 我是一枚正直純潔的苦逼程序員&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;ul&#xff0c;ol&#xff0c;dl標簽是CSS網頁布局中常用的列表元素。 列表將具有相似特征或先后順序的內容按照從上到下的順序排列起來。1.ul標簽&#xff1a;無序列表始于…

slot多作用域 vue_詳解Vue.js 作用域、slot用法(單個slot、具名slot)

作用域HEi免費資源網在介紹slot前&#xff0c;需要先知道一個概念&#xff1a;編譯的作用域。比如父組件中有如下模板&#xff1a;HEi免費資源網{{message}}這里的message就是一個slot&#xff0c;但是它綁定的是父組件的數據&#xff0c;而不是組件< child-component >的…

Java – JDK 8的遠景

世界正在緩慢但肯定地發生變化。 經過更改后&#xff0c;Java有了JDK 7的全新外觀&#xff0c;Java社區期待JDK 8&#xff08;可能還有JDK 9&#xff09;所帶來的其余改進。 JDK 8的目標目的是填補JDK 7實施中的空白-該實施中剩下的部分難題&#xff0c;應該在2013年底之前為廣…