1.浮動(dòng)元素有什么特征强缘?對(duì)父容器督惰、其他浮動(dòng)元素姑丑、普通元素栅哀、文字分別有什么影響?
1.float元素會(huì)脫離正常的文檔流留拾,按照其外邊距指定的位置相對(duì)于它的上一個(gè)塊級(jí)元素(或父元素)顯示痴柔;
2.浮動(dòng)元素后面的塊級(jí)元素的內(nèi)容會(huì)向此浮動(dòng)元素的外邊距靠齊
邊框和背景忽略浮動(dòng)元素而向上一個(gè)任意非浮動(dòng)元素靠齊
浮動(dòng)元素后面的內(nèi)聯(lián)元素會(huì)向此浮動(dòng)元素的外邊距靠齊
1豪嚎、對(duì)其父元素的影響
元素浮動(dòng)之后谈火,它脫離當(dāng)前正常的文檔流糯耍,無法撐開其父元素温技,造成父元素的塌陷
2、對(duì)其兄弟元素(浮動(dòng))的影響
同一個(gè)方向的浮動(dòng)元素:當(dāng)一個(gè)浮動(dòng)元素在浮動(dòng)過程中碰到同一個(gè)方向的浮動(dòng)元素時(shí)震檩,它會(huì)緊跟在它們后面
反方向的浮動(dòng)元素:互不影響恳蹲,位于同一條水平線上俩滥,當(dāng)空間不夠時(shí)會(huì)被擠下
3、對(duì)其兄弟元素(非浮動(dòng))的影響
如果兄弟元素為塊級(jí)元素贺奠,該元素會(huì)忽視浮動(dòng)元素的而占據(jù)它的位置霜旧,(同一層疊上下文中,float元素比block元素更靠近用戶)儡率,但block元素里面的inline-block挂据,inline,例如文字等元素會(huì)環(huán)繞浮動(dòng)元素排列儿普;
如果兄弟元素為內(nèi)聯(lián)元素崎逃,則元素會(huì)環(huán)繞浮動(dòng)元素排列。
4眉孩、對(duì)子元素的影響
當(dāng)一個(gè)元素浮動(dòng)時(shí)个绍,在沒有清除浮動(dòng)的情況下,它無法撐開其父元素,但它可以讓自己的浮動(dòng)子元素?fù)伍_它自身钉迷,并且在沒有定義具體寬度情況下,使自身的寬度從100%變?yōu)樽赃m應(yīng)(浮動(dòng)元素display:block)。其高度和寬度均為浮動(dòng)元素高度和非浮動(dòng)元素高度之間的最大值。
2.清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法
清楚浮動(dòng)大意指的是:解決浮動(dòng)父容器高度塌陷問題傍菇;
① 利用clear屬性咐低;
在父容器最后添加一個(gè)空div<div style="clear:both;"></div>
或者:
.clearfix{
*zoom:1; /*觸發(fā) hasLayout羹令, 針對(duì)ie6,7*/
}
.clearfix:after{
content:"";
display:block;
clear:left;
}
② 利用BFC特性,只要父容器形成BFC就可以衡奥,例如:
float為 left|right
overflow為 hidden|auto|scroll
display為 table-cell|table-caption|inline-block
position為 absolute|fixed
3.有幾種定位方式盹兢,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么见芹,使用場(chǎng)景是什么和二?
CSS定位方式有四種:默認(rèn)定位(static)、相對(duì)定位(relative)、絕對(duì)定位(absolute)和固定定位(fixed)
① absolute:絕對(duì)定位,脫離文檔流恨樟,相對(duì)于 static 定位以外的第一個(gè)父元素(一直都沒有的話以html根節(jié)點(diǎn)為準(zhǔn))進(jìn)行定位。元素的位置通過 "left", "top", "right" "bottom" 屬性進(jìn)行規(guī)定。
② fixed:相對(duì)于瀏覽器窗口進(jìn)行定位零酪。元素的位置通過 "left", "top", "right" 方咆, "bottom" 進(jìn)行規(guī)定煌集。參考場(chǎng)景:隨著鼠標(biāo)拖動(dòng)始終不動(dòng)的頑固小廣告所禀;
③ relative:相對(duì)定位横腿,相對(duì)于原來的位置移動(dòng)罗侯,沒有脫離文檔流诊县,偏移前的位置依然保留,改變位置之后對(duì)其他兄弟元素等不造成影響钳枕;
4.z-index 有什么作用? 如何使用?
z-index屬性用于設(shè)置節(jié)點(diǎn)的堆疊順序菩佑,擁有更高堆疊順序的節(jié)點(diǎn)將顯示在堆疊順序較低的節(jié)點(diǎn)前面。即同一層疊上下文,屬性值越大负蠕,被層疊在最上面燎悍。
1.z-index僅對(duì)定位元素有效(position為relative臊诊,absolute,fixed)
2.z-index只可比較同級(jí)元素(不同層疊上下文中的無法通過z-index比較)
5.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
2者都沒有脫離文檔流位他,但是position:relative偏移后醋粟,偏移前的位置依然保留较鼓,改變位置之后對(duì)其他元素不造成影響躺率;
負(fù)邊距會(huì)使元素在文檔流中的位置發(fā)生偏移,它會(huì)放棄偏移之前占據(jù)的空間努溃,緊挨其后的元素會(huì)填充這部分空間凳谦;
6.BFC 是什么?如何生成 BFC世舰?BFC 有什么作用喷好?舉例說明
塊級(jí)格式化上下文BFC:
浮動(dòng)(float)哆键,絕對(duì)定位的元素(absolute;fixed;)塊容器(inline-block颂碘,table-cell澎胡,table-caption)塊元素(display:block:overflow不為visible,為overflow :auto,hidden,scoll)的會(huì)去建立一個(gè)新的塊級(jí)格式化上下文
作用
1:清除垂直外邊距合并
html:
<div class="ct">ct</div>
<div class="a">
<div class="b">b</div>
</div>
css:
*{
padding:0;
margin:0;
}
.ct{
width:100px;
height:100px;
background:blue;
}
.a{
width:100px;
height:100px;
background:pink;
overflow:auto;/*父元素設(shè)為BFC*/
}
.b{
width:50px;
height:50px;
background:yellow;
margin:20px;
}
2:不會(huì)重疊浮動(dòng)元素
html:
<div class="ct">
<div class="a"></div>
<div class="b">float馋艺,絕對(duì)定位的元素(absolute;fixed;)塊容器(inline-block雏赦,table-cell俏橘,table-caption)塊元素(display:block:overflow不為visible剖踊,為overflow :auto,hidden,scoll)的會(huì)去建立一個(gè)新的塊級(jí)格式化上下文</div>
</div>
css:
*{
padding:0;
margin:0;
}
.ct{
border:1px solid;
}
.a{
width:70px;
height:70px;
float:left;
background:pink;
}
.b{
border:5px solid ;
overflow:hidden;/*BFC*/
}
3:包含浮動(dòng)元素
html:
<div class="ct">
<div class="a"></div>
<div class="b"></div>
</div>
css:*{
margin:0px;
padding:0px;
}
.ct{
border:2px solid;
float:left;/*BFC*/
}
.a,.b{
float:left;
width:100px;
height:50px;
}
.a{
background:pink;
}
.b{
background:yellow;
}
7.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并屡穗?如何合并?如何不讓相鄰元素外邊距合并忽肛?給個(gè)父子外邊距合并的范例
在CSS中鸡捐,兩個(gè)或多個(gè)毗鄰(父子元素或兄弟元素)的普通流中的塊元素垂直方向上的 margin 會(huì)發(fā)生疊加。這種方式形成的外邊距即可稱為外邊距合并麻裁;
對(duì)于父子元素來說,當(dāng)容器沒有padding和border時(shí)源祈,內(nèi)部的margin會(huì)引發(fā)外邊距合并煎源;
注:毗鄰:指沒有被非空內(nèi)容、padding香缺、border 或 clear 分隔開手销。普通流:除float、absolute外
合并規(guī)則: 兩個(gè)外邊距都是正數(shù)图张,取兩者之中的較大者锋拖;兩個(gè)外邊距都是負(fù)數(shù),取兩者之間絕對(duì)值較大者祸轮;當(dāng)兩個(gè)外邊距一正一負(fù)時(shí)兽埃,取兩者的和。
解決外邊距合并問題:
1.浮動(dòng)元素适袜、inline-block 元素柄错、絕對(duì)定位元素的 margin 不會(huì)和垂直方向上其他元素的 margin 折疊(這里指的是上下相鄰的元素)
2.創(chuàng)建了BFC的元素和它的子元素不會(huì)發(fā)生折疊)
范例:http://js.jirengu.com/cikib/2/edit