[前端日記]0.x.4/float&clear

浮動


語法:

float:left|right|none

一句話理解:

浮動可以理解為豌骏,讓某個元素脫離標準流(從左到右,自上而下排列)焙蹭,漂浮在標準流之上;

  1. 當一個元素浮動后嫂伞,他會脫離正常的文檔流孔厉,然后向左或向右水平移動拯钻,一直平移到所處容器的包含框(邊框),或者碰到另一個浮動元素的邊框烟馅。

(呈現(xiàn)為:緊貼著上一個元素的邊说庭,如果一行塞不下的話,那么B元素會被擠到下一行)郑趁;

  1. 如果浮動元素的上一個元素是標準文檔流中的元素(即沒有浮動)刊驴,那么浮動元素相對于上一個文檔流中的元素的相對垂直位置就不會變

(顯示效果:浮動元素總會保證自己的top與上一個普通元素的bottom對齊,也就是寡润,浮動在包圍元素的邊上)

  1. 浮動的元素順序是根據(jù)HTML中的元素順序決定的捆憎,也就是按照瀏覽器渲染順序決定排序;

清除浮動


一句話理解:

清除浮動可以理解為打破元素之間的橫向排列

clear元素:

  1. clear:left(不允許元素左邊有浮動元素)/right; 應當應用在要去除浮動的元素本身梭纹;也就是躲惰,你要影響哪個元素,就把樣式調用在哪個元素里面变抽;

清楚浮動


方法1:添加額外空標簽

在浮動元素末尾添加一個額外的空標簽础拨,來撐開盒子如下:

CSS:
.clear{clear:both;}
HTML:
<div class="clear"></div>
<br class="clear">
<!-- 利用br標簽自帶的屬性 -->
<br clear="all">
<hr class="clear">
<!-- 同上,利用<hr>標簽 -->

優(yōu)點:簡單易懂绍载,并且代碼量泄钭凇;
缺點:額外添加了大量的無語義的標簽击儡,HTML代碼不夠優(yōu)雅塔沃;
總結:知曉就好,不建議使用阳谍;

方法2:使用父元素overflow:hidden

CSS:
overflow:hidden;
*zoom:1;

給浮動元素的父容器添加overflow:hidden;蛀柴,還要注意,在 IE6 中還需要觸發(fā) hasLayout矫夯,方法:為父元素設置容器寬高或設置zoom:1;
理解:在添加overflow屬性后鸽疾,浮動元素又回到了容器層,把容器高度撐起训貌,達到了清理浮動的效果肮韧。此外還可以讓父元素使用overflow:auto;

優(yōu)點:代碼簡單,方便理解旺订;

缺點:

  1. 多個嵌套后,firefox某些情況會造成內容全選超燃;IE中mouseover造成寬度改變時會出現(xiàn)最外層模塊有滾動條等区拳,firefox早期版本會無故產生focus等;
  2. 因為應用了overflow意乓,內容增多時容易造成多余內容被截去樱调,造成下拉菜單會被遮擋约素,擴展性,兼容性不足笆凌;

總結:為了不出奇奇怪怪的問題圣猎,不建議使用;

方法3:讓浮動元素的容器(父元素)也浮動

給浮動元素的容器也添加上浮動屬性即可清除內部浮動乞而;

缺點:拆了東墻補西墻送悔,這樣會使父元素浮動,影響布局爪模;

總結:不推薦使用欠啤。

方法4:display: table;

給父元素設置display:table

優(yōu)點:代碼量小屋灌;

缺點:改變了盒模型本身洁段,變?yōu)楸砀衲P脱攘梗纱藭斐梢幌盗懈鄦栴}免绿;

方法5:使用鄰接元素處理

直接在浮動元素后面加上一個帶clear屬性的元素

.news {
  background-color: gray;
  border: solid1pxblack;
}
.news img {
  float: left;
}
.news p {
  float: right;
}
.content {
  clear: both;
}

<div class="news">
<img src="news-pic.jpg"/>
<p>sometext</p>
<div class="content"></div>
</div>

HTML代碼不夠簡潔,增加了無意義的標簽嘶伟。

方法6:使用CSS3的::after偽元素

:after是CSS新增的偽元素除嘹,代表一個元素之后最為鄰近的元素

具體做法:

1. 給浮動元素的父容器添加class="clearfix"的類写半;

2. 然后在樣式表中聲明clearfix::after的css規(guī)則,實現(xiàn)父容器中浮動元素末尾添加了一個看不見的塊元素來清理浮動(注意:這個新增的元素在文檔流中)憾赁;

3. 為了兼容IE6,7污朽,別忘了加上zoom:1;來觸發(fā)IE的haslayout龙考;

代碼如下:

.news{
  background-color: gray;
  border: solid 1px black;
}
.news img{
  float: left;
}
.news p{
  float: right;
}
.clearfix:after{
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}
.clearfix {
/*觸發(fā)hasLayout*/
  zoom: 1;
}

<div class="news clearfix">
  <img src="news-pic.jpg"/>
  <p>sometext</p>
</div>

 效果圖(清除浮動前)
效果圖(清除浮動前)

[圖片上傳失敗...(image-4502f-1518933762350)]

目前clearfix的標準寫法:

<!--作者標準寫法-->
.clearfix:after {
    content:" ";
    display:table;
    clear:both;
}
.clearfix {
/*觸發(fā)hasLayout*/
  zoom: 1;
<!--老IE需要配合給父級元素加上zoom:1來解決IE6,7適配問題-->

Question

Q1:為什么叫clearfix蟆肆?字面上就是修復(fix)清除浮動(clear),方便理解和隨時調用晦款;

Q2:為什么在父容器上添加clearfix類名炎功?因為我們要在樣失表中添加clearfix::after;

Q3:zoom:1是什么缓溅?這是IE的專屬屬性蛇损,為了IE6和IE7瀏覽器,要給clearfix這個class添加一條zoom:1;以此觸發(fā)haslayout坛怪,和觸發(fā)BFC一個道理淤齐;

Q4:content里面為什么加上一個點?必須要有內容袜匿,而句點是最小的內容更啄;

Q5:height和visibility是干嘛的?確保這個偽元素在頁面上沒有高度居灯,并且不可見祭务,如果沒有這兩個元素内狗,你就可以看到這個點了;

優(yōu)點:代碼量正常义锥,可復用性強

總結:建議使用偽元素方法

總結

為了清除浮動柳沙,上面列了五種方法,大致分為以下兩類

1. 利用clear屬性拌倍,包括在浮動元素最末尾添加一個d愛clear:both的閉合標簽赂鲤,及利用::after偽元素在元素末尾添加內容為一點句點,且aiy偶clear:both屬性的元素贰拿;

2. 利用BFC蛤袒,通過各種手段,包括浮動父容器膨更,添加overflow妙真,父容器設為inline-block等使得父容器生成BFC,與外界隔離開荚守;

這里提到了BFC珍德,那么BFC是什么呢?

CSS2.1中引入了Block Fomatting Contexts矗漾,即塊級元素格式化上下文的概念锈候,簡單說就是塊級元素的排列規(guī)則;

那么如何觸發(fā)BFC敞贡,如何通過BFC來完成各種布局目的呢泵琳?且看下一篇文章。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末誊役,一起剝皮案震驚了整個濱河市获列,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛔垢,老刑警劉巖击孩,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鹏漆,居然都是意外死亡巩梢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門艺玲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來括蝠,“玉大人,你說我怎么就攤上這事饭聚〖删” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵若治,是天一觀的道長慨蓝。 經常有香客問我,道長端幼,這世上最難降的妖魔是什么礼烈? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮婆跑,結果婚禮上此熬,老公的妹妹穿的比我還像新娘。我一直安慰自己滑进,他們只是感情好犀忱,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扶关,像睡著了一般阴汇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上节槐,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天搀庶,我揣著相機與錄音,去河邊找鬼铜异。 笑死哥倔,一個胖子當著我的面吹牛,可吹牛的內容都是我干的揍庄。 我是一名探鬼主播咆蒿,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚂子!你這毒婦竟也來了沃测?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缆镣,失蹤者是張志新(化名)和其女友劉穎芽突,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體董瞻,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡寞蚌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钠糊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挟秤。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抄伍,靈堂內的尸體忽然破棺而出艘刚,到底是詐尸還是另有隱情,我是刑警寧澤截珍,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布攀甚,位于F島的核電站箩朴,受9級特大地震影響,放射性物質發(fā)生泄漏秋度。R本人自食惡果不足惜炸庞,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荚斯。 院中可真熱鬧埠居,春花似錦、人聲如沸事期。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兽泣。三九已至绎橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撞叨,已是汗流浹背金踪。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牵敷,地道東北人胡岔。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像枷餐,于是被迫代替她去往敵國和親靶瘸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案毛肋? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,759評論 1 92
  • 浮動怨咪,從誕生那天起,它就是個特別的屬性——既為網頁布局帶來新的方法润匙,卻又隨之產生一系列的問題诗眨。當然,隨著時間的推移...
    郝特么冷閱讀 844評論 0 6
  • <a name='html'>HTML</a> Doctype作用孕讳?標準模式與兼容模式各有什么區(qū)別? (1)匠楚、<...
    clark124閱讀 3,497評論 1 19
  • 這篇文章極好,以至于讓我受益良多,就一字沒有改動的轉發(fā)過來一絲冰涼老師的文章 需要注意的是,display:tab...
    新晉小牛牛閱讀 1,051評論 0 2
  • 文/鳴沙石 這周跟小伙伴一起讀了一本書:《精進》,作者采銅璃饱。因為工作沖擊的原因与斤,用一天的時間速度了這本書,讀...
    鳴沙石丨寫作群招人閱讀 1,596評論 0 2