CSS那些事兒2
1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響?
. 1.1 首先解釋浮動(dòng):
使元素脫離文檔流(雖然似乎國(guó)外沒有文檔流這個(gè)具體概念),按照我們指定的方式移動(dòng)(left,right等等)
當(dāng)浮動(dòng)元素遇到父級(jí)元素邊界或者相鄰的浮動(dòng)元素則停止浮動(dòng)
文檔中的普通元素察覺不到浮動(dòng)元素存在,但是文本可以感覺到,出現(xiàn)環(huán)繞浮動(dòng)元素排列的現(xiàn)象
. 1.2影響:
. 1.2.1父容器
所有元素都是浮動(dòng)元素,父容器失去高度(即高度坍塌)
. 1.2.2其他浮動(dòng)元素
兩種情況:對(duì)其他浮動(dòng)元素的影響:如果父元素的寬度不夠,父容器里的其他浮動(dòng)元素會(huì)向下移動(dòng),直到位置足夠放下。
如果浮動(dòng)元素的高度不同,向下移動(dòng)的元素就會(huì)被比它高的元素卡住
. 1.2.3普通元素,文字
普通元素感知不到浮動(dòng)元素,會(huì)被遮蓋,文字可以感知,會(huì)環(huán)繞浮動(dòng)元素排列
2.清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法
. 2.1 因?yàn)楦?dòng)元素脫離文檔流,父元素?zé)o法感知浮動(dòng)元素的容量,如果父元素未設(shè)置高度值,父元素高度將無(wú)法只由浮動(dòng)元素?fù)伍_,也就是會(huì)出現(xiàn)高度坍塌
. 2.2 清除浮動(dòng)方式:
. after偽類大法:在父元素中加入after偽標(biāo)簽父元素:after{content:'';display:block;clear:both;}:after{content"添加的內(nèi)容";} IE6,7下不兼容
zoom :1 用來(lái)觸發(fā) IE下 haslayout,使元素根據(jù)自身內(nèi)容計(jì)算寬高。
. 最后一個(gè)子元素后面添加一個(gè)沒有高度的空div{clear:both;}
. 將父元素轉(zhuǎn)化為BFC后面會(huì)講到!
overflow:hidden/auto/scroll(客官三選一)
display:inline-block float:方位等等
3.有幾種定位方式,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么,使用場(chǎng)景是什么?
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值
static 默認(rèn)值,沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對(duì)定位的元素,相對(duì)于元素本身正常位置進(jìn)行定位,因此,left:20px會(huì)向元素的 left 位置添加20px
absolute 生成絕對(duì)定位的元素,相對(duì)于static定位以外的第一個(gè)祖先元素(offset parent)進(jìn)行定位,元素的位置通過 left, top, right以及 bottom 屬性進(jìn)行規(guī)定
fixed 生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定
sticky CSS3新屬性,表現(xiàn)類似position:relative和position:fixed的合體,在目標(biāo)區(qū)域在屏幕中可見時(shí),它的行為就像position:relative; 而當(dāng)頁(yè)面滾動(dòng)超出目標(biāo)區(qū)域時(shí),它的表現(xiàn)就像position:fixed,它會(huì)固定在目標(biāo)位置
4.z-index 有什么作用? 如何使用?
z-index 屬性指定一個(gè)元素的堆疊順序。因?yàn)榻^對(duì)定位的元素脫離了普通流,所以絕對(duì)定位的元素可以覆蓋頁(yè)面上的其它元素。數(shù)兒越大在越外層:z-index:4;數(shù)值越高,越優(yōu)先顯示。
5.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
. position:relative;只相對(duì)自己原本位置發(fā)生偏移,不影響其它普通流中元素的位置。也就是說(shuō)還占據(jù)文檔流中原來(lái)的位置。
. margin:除了讓元素自身發(fā)生偏移還影響其它普通流中的元素。后面的元素會(huì)緊跟此元素占據(jù)位置
6.BFC 是什么?如何生成 BFC?BFC 有什么作用?舉例說(shuō)明
. BFC,格式化塊級(jí)上下文,使元素形成獨(dú)立的與其他塊隔離的容器,容器里面的子元素不會(huì)影響到外面的元素。
float 除了none以外的值
overflow 除了visible 以外的值(hidden,auto,scroll )
display (table-cell,table-caption,inline-block, flex, inline-flex)
position值為(absolute,fixed)
fieldset元素
在以上的情況里可以創(chuàng)建BFC
. (1) 解決margin重疊問題,同一個(gè)BFC中,相鄰元素之間的邊距會(huì)合并,如果把這兩個(gè)元素分別放在兩個(gè)BFC中,他們的邊距就不會(huì)合并。一般應(yīng)用于嵌套。
.(2) 清除浮動(dòng)。BFC不會(huì)重疊浮動(dòng)元素。
7.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例
. 外邊距合并:兩個(gè)在普通文檔流中相鄰的元素外邊距相遇的時(shí)候發(fā)生合并。這個(gè)相鄰可以是父子關(guān)系相鄰,兄弟關(guān)系相鄰,一個(gè)元素內(nèi)部沒有東西,自身的上下邊距相遇時(shí)都會(huì)發(fā)生外邊距合并。只有普通文檔流中塊框的垂直外邊距才會(huì)發(fā)生外邊距合并。行內(nèi)框、浮動(dòng)框或絕對(duì)定位之間的外邊距不會(huì)合并
會(huì)選取較大值進(jìn)行合并
合并的結(jié)果: 兩個(gè)外邊距都是正數(shù),取兩者之中的較大者;兩個(gè)外邊距都是負(fù)數(shù),取兩者之間絕對(duì)值較大者;當(dāng)兩個(gè)外邊距一正一負(fù)時(shí),取兩者的和。