CSS中的浮動(dòng)與定位

1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響?
(1)浮動(dòng)元素會(huì)脫離正常的文檔流,按照其外邊距指定的位置相對(duì)于它的上一個(gè)塊級(jí)元素(或父元素)顯示
(2)浮動(dòng)元素后面的塊級(jí)元素的內(nèi)容會(huì)向此浮動(dòng)元素的外邊距靠齊,但是邊框和背景卻忽略浮動(dòng)元素而向上一個(gè)任意非浮動(dòng)元素靠齊
(3)浮動(dòng)元素后面的內(nèi)聯(lián)元素會(huì)向此浮動(dòng)元素的外邊距靠齊

對(duì)父容器的影響:
對(duì)于其父元素來(lái)說(shuō),元素浮動(dòng)之后,它脫離當(dāng)前正常的文檔流,所以它也無(wú)法撐開(kāi)其父元素,造成父元素的塌陷
對(duì)其他浮動(dòng)元素的影響:
(1)同一個(gè)方向的浮動(dòng)元素:當(dāng)一個(gè)浮動(dòng)元素在浮動(dòng)過(guò)程中碰到同一個(gè)方向的浮動(dòng)元素時(shí),它會(huì)緊跟在它們后面
(2)反方向的浮動(dòng)元素:互不影響,位于同一條水平線上,當(dāng)空間不夠時(shí)會(huì)被擠下
對(duì)普通元素的影響:
(1)對(duì)于其父元素來(lái)說(shuō),元素浮動(dòng)之后,它脫離當(dāng)前正常的文檔流,所以它也無(wú)法撐開(kāi)其父元素,造成父元素的塌陷。
(2)如果兄弟元素為內(nèi)聯(lián)元素,則元素會(huì)環(huán)繞浮動(dòng)元素排列。
對(duì)文字的影響:環(huán)繞浮動(dòng)元素。

2.清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法

清除浮動(dòng)指清除掉元素的float屬性,消除浮動(dòng)元素對(duì)其他元素的影響(如父元素高度坍塌)
第一種:添加新的元素,應(yīng)用clear:both
HTML:
<div class="outer">
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>
<div class="clear"></div>
</div>

CSS:
.clear{clear:both; height: 0; line-height: 0; font-size: 0}

第二種:給父級(jí)元素定義overflow
HTML:
<div class="outer over-flow"> //這里添加了一個(gè)class
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>

</div>
CSS:
.over-flow{
overflow: auto; //也可以設(shè)置hidden
zoom: 1; //zoom: 1; 處理兼容性問(wèn)題
}

第三種:after 方法:(注意:作用于浮動(dòng)元素的父親)
先說(shuō)原理:

這種方法清除浮動(dòng)是現(xiàn)在網(wǎng)上最拉風(fēng)的一種清除浮動(dòng),他是利用:after和:before來(lái)在元素內(nèi)部插入兩個(gè)元素塊,從面達(dá)到清除浮動(dòng)的效果。其實(shí)現(xiàn)原理類似于clear:both方法,只是區(qū)別在于:clear在html插入一個(gè)div.clear標(biāo)簽,而outer利用其偽類clear:after在元素內(nèi)部增加一個(gè)類似于div.clear的效果。下面來(lái)看看其具體的使用方法:

HTML:
<div class="outer">
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>
</div>
CSS:
.outer {zoom:1;}
.outer :after {
clear:both;
content:'.';
display:block;
width: 0;
height: 0;
visibility:hidden;
}

其中clear:both;指清除所有浮動(dòng);content: '.'; display:block;對(duì)于FF/chrome/opera/IE8不能缺少,其中content()可以取值也可以為空。visibility:hidden;的作用是允許瀏覽器渲染它,但是不顯示出來(lái),這樣才能實(shí)現(xiàn)清楚浮動(dòng)。

下一標(biāo)簽直接清浮動(dòng)兄弟標(biāo)簽浮動(dòng)時(shí),在下一標(biāo)簽的屬性中直接寫入清除clear:both;這樣就可以清除以上標(biāo)簽的浮動(dòng)而不用加入空標(biāo)簽來(lái)清除浮動(dòng)。

*當(dāng)一個(gè)內(nèi)層元素是浮動(dòng)的時(shí)候,如果沒(méi)有關(guān)閉浮動(dòng)時(shí),其父元素也就不會(huì)再包含這個(gè)浮動(dòng)的內(nèi)層元素,因?yàn)榇藭r(shí)浮動(dòng)元素已經(jīng)脫離了文檔流。也就是為什么外層不能被撐開(kāi)了!

3.有幾種定位方式,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么,使用場(chǎng)景是什么?
普通流:
static:這是默認(rèn)的定位方式。
相對(duì)定位:
relative:參考點(diǎn)是該元素本身,它是相對(duì)于它原來(lái)的位置發(fā)生變化。如果對(duì)一個(gè)元素進(jìn)行相對(duì)定位,它將出現(xiàn)在他所在的位置上,然后可以通過(guò)設(shè)置垂直或水平位置,讓這個(gè)元素相對(duì)于它自己移動(dòng),在使用相對(duì)定位時(shí),無(wú)論元素是否移動(dòng),元素在文檔流中占據(jù)原來(lái)空間,只是表現(xiàn)出來(lái)的位置會(huì)改變。
絕對(duì)定位:
absolute:它的位置是相對(duì)于距離最近的非static祖先元素位置決定的。如果元素沒(méi)有已定位的祖先元素,那么他的位置就相對(duì)于初始包含塊html來(lái)定位。
fixed:固定定位是絕對(duì)定位的一種,固定定位的元素也不包含在普通文檔流中,它的參考點(diǎn)是視口。

4.z-index 有什么作用? 如何使用?
z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面。 當(dāng)元素的position屬性為absolute,relative或fixed。
z-index越高,元素位置越靠上。

5.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative;只相對(duì)自己原本位置發(fā)生偏移,不影響其它普通流中元素的位置。負(fù)margin:除了讓元素自身發(fā)生偏移還影響其它普通流中的元素。

6.BFC 是什么?如何生成 BFC?BFC 有什么作用?舉例說(shuō)明
BFC(Block Formatting Content)塊格式化上下文。

生成BFC:
1.float為 left|right
2.overflow為 hidden|auto|scroll
3.display為 table-cell|table-caption|inline-block
4.position為 absolute|fixed

作用:

  • 可以包含浮動(dòng)元素
  • 可以阻止外邊距折疊
  • 可以防止元素被浮動(dòng)元素覆蓋

7.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例
(1)在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?
外邊距合并:兩個(gè)在普通文檔流中相鄰的元素外邊距相遇的時(shí)候發(fā)生合并。這個(gè)相鄰可以是父子關(guān)系相鄰,兄弟關(guān)系相鄰,或者一個(gè)元素內(nèi)部沒(méi)有東西,自身的上下邊距相遇時(shí)都會(huì)發(fā)生外邊距合并。
合并的結(jié)果: 兩個(gè)外邊距都是正數(shù),取兩者之中的較大者;兩個(gè)外邊距都是負(fù)數(shù),取兩者之間絕對(duì)值較大者;當(dāng)兩個(gè)外邊距一正一負(fù)時(shí),取兩者的和。
(2)如何不讓相鄰元素外邊距合并?
若不想讓相鄰元素合并,設(shè)置浮動(dòng),display:inline-block或使其父元素均形成BFC可防止邊距合并(如overflow:hidden)。

舉例:


Paste_Image.png

子元素box1的外邊距與父元素box的外邊距合并,box與ct的外邊距合并,box1與ct的外邊距合并。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,155評(píng)論 1 92
  • 一,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 1,003評(píng)論 0 4
  • relative:生成相對(duì)定位的元素,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 1,077評(píng)論 0 2
  • 1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 何謂浮動(dòng)元素?有什么特征?所謂浮動(dòng)...
    草鞋弟閱讀 928評(píng)論 0 1
  • 這個(gè)圖片是我制作出來(lái)發(fā)在微信圈里的。本就是抒發(fā)一下心情而已。但是,出現(xiàn)了幽默的后續(xù)。 你是誰(shuí)?你為什么要詩(shī)畫的生活...
    冉冉語(yǔ)文閱讀 328評(píng)論 0 4

友情鏈接更多精彩內(nèi)容