清除浮動的幾大方法

?對于剛接觸到html的一些人經常會用到浮動布局,但對于浮動的使用和清除浮動來說是大為頭痛的,在這里介紹幾個關于清除浮動的的方法。如果你說你要的就是浮動為什么要清除浮動的話,我就真的無言以對了,那你就當我沒說。

??? 關于我們在布局的時候,經常會用到浮動和定位,特別是涉及到寬高自適應的網站布局時,就經常會出現“誒!我父元素的盒子設置的樣式怎么不見了”,當你一按F12,在眾多代碼尋它千百遍之后,終于驀然回首時發現萬花叢中的那個盒子赫然顯示著高度為零,what,我的高度怎么為零?不是說好父元素可以靠子元素撐開么?這是什么情況,是不是我的智商有問題?是不是我不適合學這個?為什么別人的可以我的不行?是不是瀏覽器針對我?其實這種問題剛開始學這個的話每個人都會碰到,這就是典型的父元素高度塌陷問題,這問題主要歸根于你的子元素使用了浮動或者定位。

我們都知道,浮動和定位都是使元素脫離文檔流,簡單的一點講就是它在網頁上不占位置,不按照瀏覽器規定的順序來排列,它是漂浮于文檔流之上,當它子元素不占位置,父元素就相當于是一個空盒子。就好比一個氣球,一開始你吧氣球里面灌滿了水,氣球自然就撐開了,當你有時候有需求會把水倒到杯子里面,倒進杯子之后氣球后自然癟了。子元素就相當于水,父元素就相當于氣球,浮動和定位就相當于把水取出來單獨放一個容器,想要讓原來的氣球再撐起來,我們就需要把這個水再放回去,但是如果把水再倒進去就失去了把水放到杯子里的意義,所以現在只有一種方法就是連杯子一起放到氣球里面去,這個方法在網頁里面應用就是清除浮動。清除浮動有好多種,現在我們來談談清除浮動的幾種常見的方法(真正的現在才開始)。

第一種就是給父元素加上高度,或許有人會說了,你他嗎這是什么狗屁方法,能給高度我還用擔心父元素高度塌陷?不可否認的是這是最簡單的方法,你什么都不用做一個height:**px就解決了問題,但是這個方法對于那種寬高自適應或者流體布局的網站來說就跟沒說一樣,一個字“不能給”。面對這種不能給的我們也不是沒有辦法。

第二種方法是當子元素浮動的時候也給父元素增加浮動,但是這就會引起父元素的父元素高度塌陷,然后我們再給父元素的父元素增加浮動,于是父元素的父元素的父元素再次塌陷,然而我們需要繼續給父元素的父元素的父元素增加浮動。這樣加上就可可能影響到子元素的祖宗十八代了,所以這種方法只可以解決當前問題,可能會引發一串的麻煩,所以就不可取的。這是我們就需要的第三種方法。

第三種就是使用clear:both,clear屬性不允許被清除浮動的元素的左邊/右邊挨著浮動元素,就是我們需要在兄弟元素上面增加,但兄弟元素不能是浮動的元素且必須是父元素里面最后的一個元素,但是如果子元素在同一排的話,就必須在末尾增加一個空元素來設置clear,這就增加了多余的代碼,并且IE6、IE7是不支持這個屬性的。并且這個在后期維護中將是噩夢,這是堅決不能忍受的。那么現在還有一種方法。

第四種是使用display:inline-block, 這種方法就不管你一排有多少子元素,都不需要給float,直接全部給個這個屬性,inline-block是給子元素轉換成行內塊,應該都知道行內塊是直接在一行內顯示的,所以自然不需要使用浮動了,不用浮動的話自然就沒有高度塌陷問題了,但是他會帶來兩個BUG,行內塊和其他元素之間會生成一個間隙,但是這個可以給父元素增加font-size:0來解決,還有另外一個問題就是,當行內塊里面沒有內容時,是按照盒子底部對齊來排列的,塊里面有內容的時候,行內塊是按照內容的底部對齊來排列,這時候我們就需要使用vertical-align來設置元素的對齊方式,如果一行內有多個元素的時候我們就需要全部設置此屬性,也就是說我們使用這個方法就要解決這個方法帶來的BUG,這個方法還有一個致命的問題,那就是IE6,IE7同樣是不兼容的。所以再牛逼的方法都逃不掉被IE6扼殺的命運。所以這個方法還不是很完美,那我們再找找看還有沒有辦法。

第五種則是給父元素增加overflow:hidden;當子元素浮動的時候,我們只需要給父元素增加一個overflow:hidden;我們應該知道這個是裁切超出盒子部分的內容,所以有人要問了,為什么這個也可以清楚浮動呢,這個就要牽扯到BFC了,所有能觸發BFC的屬性都可以解決高度塌陷問題,至于什么是BFC可以去百度查一下,但是這個方法就如第三種和第四種方法一樣當遇到萬惡的IE6、IE7我們也是game over的,還有一點就是當overflow碰到絕對定位和相對定位的時候也是GG的,這時候我們不要灰心,或許你會問,世界這么大難道就沒有能完美解決高度塌陷的方法么?現在我們來看看第六種方法。

第六種方法是我們常用的定位,當我們子元素使用浮動時,給父元素使用相對定位(position:absolute)或者固定定位(fixed)的時候,我們就可以解決高度塌陷問題。因為固定定位的話一般是在特殊情況下使用,所以我們用到的只有相對定位(absolute),但是這個是有局限性的,只能清除浮動帶來的高度塌陷,如果子元素使用了相對定位,這個方法是沒有用的。這種方法雖然沒有像前幾種方法那樣涉及到兼容問題但是其局限性可見一斑。說到這里或許你們會面無表情的問,敢情你說了這么多都是廢話,難道沒有一個可以完美解決浮動的方法么?這個嘛……既然說道這了,現在就放出我們的大招,還真有一個辦法可以解決,這就是我們該提到的最后的一種方法。

這最后的一種方法就是偽類清除法,就是傳說種的萬能清除法,它可以兼容任何瀏覽器包括IE6,這個方法是這樣的:

.clear:after{

content:'''';

display:block;

clear:both;

height:0;

overflow:hidden;

visibility:hidden;

}

.clear{zoom:1;}

看到上面的代碼應該都看的出來,這個是結合以上的所有方法而形成的,.clear是類名這個可以隨便取,但為了語義化才使用這個類名,雖然這個方法看起來很復雜,其實我們只需要在初始化里面加上這個樣式,當我們需要清除浮動時只需要在塌陷的那個元素多加一個類名clear就可以 了,看著復雜其實用起來很方便。

?

轉載于:https://www.cnblogs.com/xinyuan657797068/p/8994429.html

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

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

相關文章

xgboost keras_用catboost lgbm xgboost和keras預測財務交易

xgboost kerasThe goal of this challenge is to predict whether a customer will make a transaction (“target” 1) or not (“target” 0). For that, we get a data set of 200 incognito variables and our submission is judged based on the Area Under Receiver Op…

2017. 網格游戲

2017. 網格游戲 給你一個下標從 0 開始的二維數組 grid ,數組大小為 2 x n ,其中 grid[r][c] 表示矩陣中 (r, c) 位置上的點數。現在有兩個機器人正在矩陣上參與一場游戲。 兩個機器人初始位置都是 (0, 0) ,目標位置是 (1, n-1) 。每個機器…

HUST軟工1506班第2周作業成績公布

說明 本次公布的成績對應的作業為: 第2周個人作業:WordCount編碼和測試 如果同學對作業成績存在異議,在成績公布的72小時內(截止日期4月26日0點)可以進行申訴,方式如下: 畢博平臺的第二周在線答…

幣氪共識指數排行榜0910

幣氪量化數據在今天的報告中給出DASH的近期買賣信號,可以看出從今年4月中旬起到目前為止,DASH_USDT的價格總體呈現出下降的趨勢。 轉載于:https://www.cnblogs.com/tokpick/p/9621821.html

走出囚徒困境的方法_囚徒困境的一種計算方法

走出囚徒困境的方法You and your friend have committed a murder. A few days later, the cops pick the two of you up and put you in two separate interrogation rooms such that you have no communication with each other. You think your life is over, but the polic…

2016. 增量元素之間的最大差值

2016. 增量元素之間的最大差值 給你一個下標從 0 開始的整數數組 nums &#xff0c;該數組的大小為 n &#xff0c;請你計算 nums[j] - nums[i] 能求得的 最大差值 &#xff0c;其中 0 < i < j < n 且 nums[i] < nums[j] 。 返回 最大差值 。如果不存在滿足要求的…

Zookeeper系列四:Zookeeper實現分布式鎖、Zookeeper實現配置中心

一、Zookeeper實現分布式鎖 分布式鎖主要用于在分布式環境中保證數據的一致性。 包括跨進程、跨機器、跨網絡導致共享資源不一致的問題。 1. 分布式鎖的實現思路 說明&#xff1a; 這種實現會有一個缺點&#xff0c;即當有很多進程在等待鎖的時候&#xff0c;在釋放鎖的時候會有…

resize 按鈕不會被偽元素遮蓋

textarea默認有個resize樣式&#xff0c;效果就是下面這樣 讀 《css 揭秘》時發現兩個亮點&#xff1a; 其實這個屬性不僅適用于 textarea 元素&#xff0c;適用于下面所有元素&#xff1a;elements with overflow other than visible, and optionally replaced elements repre…

平臺api對數據收集的影響_收集您的數據不是那么怪異的api

平臺api對數據收集的影響A data analytics cycle starts with gathering and extraction. I hope my previous blog gave an idea about how data from common file formats are gathered using python. In this blog, I’ll focus on extracting the data from files that are…

709. 轉換成小寫字母

709. 轉換成小寫字母 給你一個字符串 s &#xff0c;將該字符串中的大寫字母轉換成相同的小寫字母&#xff0c;返回新的字符串。 示例 1&#xff1a;輸入&#xff1a;s "Hello" 輸出&#xff1a;"hello"示例 2&#xff1a;輸入&#xff1a;s "here…

前端技術周刊 2018-09-10:Redux Mobx

前端快爆 在 Chrome 10 周年之際&#xff0c;正式發布 69 版本&#xff0c;整體 UI 重新設計&#xff0c;同時iOS 版本重新將工具欄放置在了底部。API 層面&#xff0c;支持了 CSS Scroll Snap、前端資源鎖 Web Lock API、WebWorker 里面可以跑的 OffscreenCanvas API、toggleA…

PPT制作

0.【整體風格】整體風格統一 界面排版 0.1 字體大小&#xff1b; 0.2 字體顏色&#xff1b; 0.3 字體的種類統一(不是指只取一種字體)&#xff09; 1.【表達】結構化表達&#xff1b; 2.【取色】取色風格統一&#xff1b; 技巧&#xff1a;主色不超過三種&#xff0c;色彩不宜多…

1984. 學生分數的最小差值

1984. 學生分數的最小差值 給你一個 下標從 0 開始 的整數數組 nums &#xff0c;其中 nums[i] 表示第 i 名學生的分數。另給你一個整數 k 。 從數組中選出任意 k 名學生的分數&#xff0c;使這 k 個分數間 最高分 和 最低分 的 差值 達到 最小化 。 返回可能的 最小差值 。…

WBLoadingIndicatorView(加載等待動畫)

中文說明 基于CALayer封裝加載等待動畫&#xff0c;目前支持6種類型動畫&#xff1a; typedef NS_ENUM(NSInteger, WBLoadingAnimationType) { WBLoadingAnimationcircleStrokeSpinType, WBWBLoadingAnimationBallPulseType, WBWBLoadingAnimationBallClipRotateType, WBWBLoad…

邏輯回歸 概率回歸_概率規劃的多邏輯回歸

邏輯回歸 概率回歸There is an interesting dichotomy in the world of data science between machine learning practitioners (increasingly synonymous with deep learning practitioners), and classical statisticians (both Frequentists and Bayesians). There is gener…

sys.modules[__name__]的一個實例

關于sys.modules[__name__]的用法&#xff0c;百度上閱讀量比較多得一個帖子是&#xff1a;https://www.cnblogs.com/robinunix/p/8523601.html 對于里面提到的基礎性的知識點這里就不再重復了&#xff0c;大家看原貼就好。這里為大家提供一個詳細的例子&#xff0c;幫助大家更…

ajax不利于seo_利于探索移動選項的界面

ajax不利于seoLately, my parents will often bring up in conversation their desire to move away from their California home and find a new place to settle down for retirement. Typically they will cite factors that they perceive as having altered the essence o…

C#調用WebKit內核

原文:C#調用WebKit內核版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/u013564470/article/details/80255954 系統要求 Windows與.NET框架 由于WebKit庫和.NET框架的要求&#xff0c;WebKit .NET只能在Windows系統上運行。從…

數據分析入門:如何訓練數據分析思維?

本文由 網易云 發布。 作者&#xff1a;吳彬彬&#xff08;本篇文章僅限知乎內部分享&#xff0c;如需轉載&#xff0c;請取得作者同意授權。&#xff09; 我們在生活中&#xff0c;會經常聽說兩種推理模式&#xff0c;一種是歸納 一種是演繹&#xff0c;這兩種思維模式能夠幫…

2011. 執行操作后的變量值

2011. 執行操作后的變量值 存在一種僅支持 4 種操作和 1 個變量 X 的編程語言&#xff1a; X 和 X 使變量 X 的值 加 1 –X 和 X-- 使變量 X 的值 減 1 最初&#xff0c;X 的值是 0 給你一個字符串數組 operations &#xff0c;這是由操作組成的一個列表&#xff0c;返回執行…