浮動(dòng)元素有什么特征巍糯?對父容器齿穗、其他浮動(dòng)元素、普通元素喊括、文字分別有什么影響?
1.特征:浮動(dòng)元素會(huì)脫離正常的文檔流胧瓜,按照其外邊距指定的位置相對于它的上一個(gè)塊級元素(或父元素)顯示。2.對父容器:浮動(dòng)元素脫離了普通文檔流郑什,所以將不能撐開父容器府喳,造成父容器塌陷。3.對其他浮動(dòng)元素:如果浮動(dòng)方向相同蘑拯,那么其他浮動(dòng)元素會(huì)按照順序在浮動(dòng)方向上依次排列钝满。當(dāng)父容器的寬度不夠兜粘,浮動(dòng)元素到下一行排列時(shí),還會(huì)被前面較高的浮動(dòng)元素所阻擋弯蚜,出現(xiàn)“卡住”的情況孔轴,如下圖:4.對普通元素:普通元素將不能感知到浮動(dòng)元素的存在而占據(jù)它的位置,且處于浮動(dòng)元素下層碎捺。5.對文字:文字會(huì)圍繞浮動(dòng)元素排列路鹰。
清除浮動(dòng)指什么? 如何清除浮動(dòng)?
清除浮動(dòng)就是清楚浮動(dòng)元素給周圍元素帶來的影響:對浮動(dòng)元素的兄弟元素來說,清除浮動(dòng)就是使它們規(guī)定的一邊不能與浮動(dòng)元素相鄰收厨,用clear:left/right/both;對浮動(dòng)元素的父元素來說悍引,清除浮動(dòng)就是解決浮動(dòng)元素造成的父元素塌陷問題,可以使用的方法有:
1.在父元素中再加一個(gè)空的div帽氓,設(shè)置其樣式為clear:both。
2.BFC清理浮動(dòng)俩块,形成BFC的方法有:float:left/right; overflow:hidden/auto/scroll; display:inline-block; position:absolute/fixed等黎休。
有幾種定位方式,分別是如何實(shí)現(xiàn)定位的玉凯,參考點(diǎn)是什么势腮,使用場景是什么?
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值漫仆。
static 默認(rèn)值,沒有定位捎拯,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
relative 生成相對定位的元素盲厌,相對于元素本身正常位置進(jìn)行定位署照。不會(huì)改變其他元素的位置。參考點(diǎn)是該元素原來的位置吗浩,應(yīng)用場景例如對圖片位置做細(xì)微調(diào)整建芙。
absolute 生成絕對定位的元素,相對于static定位以外的第一個(gè)祖先元素進(jìn)行定位,元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定懂扼,設(shè)置后會(huì)脫離普通文檔流禁荸。參考點(diǎn)是最近的已定位祖先元素。絕對定位使用場景例如:設(shè)置上級元素為position:relative阀湿,然后可以利用絕對定位使該元素相對于上級元素移動(dòng)到任意位置赶熟。
fixed 生成絕對定位的元素,相對于瀏覽器窗口進(jìn)行定位陷嘴。元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定映砖。參考點(diǎn)是瀏覽器窗口,使用場景例如需要使某個(gè)元素在瀏覽器窗口的固定位置顯示灾挨。
sticky CSS3新屬性啊央,表現(xiàn)類似position:relative和position:fixed的合體眶诈,兼容性差。
z-index 有什么作用? 如何使用?
作用:z-index 屬性設(shè)置元素的堆疊順序瓜饥。使用:設(shè)置z-index更高的元素會(huì)處于z-index較低的元素的前面逝撬。
position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別?
使用相對定位不會(huì)改變其他元素的位置乓土,而改變margin則會(huì)對其他元素的位置造成影響宪潮。
BFC 是什么?如何生成 BFC趣苏?BFC 有什么作用狡相?舉例說明
BFC的全稱是 Block Format Content,塊級格式化上下文食磕。它是一個(gè)獨(dú)立的渲染區(qū)域尽棕,只有Block-level box參與, 它規(guī)定了內(nèi)部的Block-level Box如何布局彬伦,并且與這個(gè)區(qū)域外部毫不相干滔悉。生成BFC的方法有:float:left/right; overflow:hidden/auto/scroll; display:inline-block; 作用:BFC會(huì)阻止垂直外邊距折疊;BFC不會(huì)重疊浮動(dòng)元素单绑;BFC可以包含浮動(dòng)舉例:因?yàn)锽FC可以包含浮動(dòng)元素回官,那么只要讓父容器生成BFC,就可以解決其子元素浮動(dòng)造成的父元素塌陷問題:在什么場景下會(huì)出現(xiàn)外邊距合并搂橙?如何合并歉提?如何不讓相鄰元素外邊距合并?
當(dāng)兩個(gè)垂直外邊距相遇時(shí)区转,它們將形成一個(gè)外邊距苔巨。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。
外邊距合并常見的方式有三種:相鄰元素外邊距合并:兩個(gè)元素都設(shè)置外邊距時(shí)废离,垂直的外邊距是這兩個(gè)外邊距的較大值而不是它們的和(合并)恋拷;嵌套元素的外邊距合并:父子元素如果沒有邊框和內(nèi)邊距把這兩個(gè)元素分開的話,它們的垂直外邊距會(huì)發(fā)生合并厅缺;自身外邊距合并:元素內(nèi)部為空蔬顾,自身的上下外邊距相遇時(shí),也會(huì)發(fā)生合并湘捎。
阻止相鄰元素外邊距合并的方法:雖然設(shè)置浮動(dòng)可以阻止相鄰元素外邊距合并诀豁,但為了清除外邊距合并而設(shè)置浮動(dòng)的做法會(huì)帶來很多副作用,所以可以在設(shè)置margin值的時(shí)候調(diào)大一些窥妇。
父子外邊距合并示例:
效果練習(xí):
alert效果: https://jsbin.com/nobinewego/
表單效果: http://js.jirengu.com/ditibitepo/3
模態(tài)框效果: http://js.jirengu.com/gazodotoka/2/
導(dǎo)航欄效果: http://js.jirengu.com/ducasegumi/2/