1. 浮動元素有什么特征侈玄?對父容器、其他浮動元素深啤、普通元素、文字分別有什么影響?
特征: 浮動的框可以向左或向右移動路星,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止溯街。由于浮動元素不在文檔的普通流中诱桂,文檔的普通流中的塊框表現(xiàn)得就像浮動框不存在一樣。
影響:
- 父容器:如果父容器的子元素都是浮動元素呈昔,如果父容器沒有定義高度挥等,那么父容器會失去高度,在浮動元素之外堤尾。
- 其它浮動元素:浮動元素可以左右移動(根據(jù)float屬性值而定)肝劲,直到它的外邊緣碰到包含框或者另一個浮動元素的邊緣
- 普通元素:浮動元素后面的普通元素的框會表現(xiàn)的像浮動元素不存在一樣
- 文字:如果浮動的元素后面有一個文檔流中的元素,那么這個元素的框會表現(xiàn)的像浮動元素不存在一樣郭宝,但是框的文本內(nèi)容會受到浮動元素的影響:文本內(nèi)容會移動以留出浮動元素的空間(文檔流中的元素的框無法感知浮動元素辞槐,但是普通元素內(nèi)部的文本內(nèi)容能感知到浮動元素)。
2. 清除浮動指什么? 如何清除浮動? 兩種以上方法
使用浮動元素可能會導(dǎo)致一些問題粘室,比如文檔流的元素中的文字會圍繞浮動元素排列榄檬,比如由于容器內(nèi)元素浮動,脫離了文檔流衔统,所以容器只剩下 邊距的高度鹿榜。為了解決這些問題,就需要清除浮動锦爵。
法1:針對文字包圍浮動元素的情況舱殿,可以使用clear屬性來清除浮動
法2:針對使用浮動元素后父容器出現(xiàn)的高度問題,可以使用BFC清理浮動或者為父容器添加一個空元素
3. 有幾種定位方式险掀,分別是如何實現(xiàn)定位的沪袭,參考點是什么,使用場景是什么迷郑?
position的含義是指定位類型枝恋,取值類型可以有:static、relative嗡害、absolute焚碌、fixed、inherit和sticky霸妹,這里sticky是CSS3新發(fā)布的一個屬性十电。
- static: 是position的默認值,元素處于正常的文檔流中叹螟,會忽略left鹃骂、top、right罢绽、bottom和z-index屬性畏线。
- relative: 是指給元素設(shè)置相對于原本位置的定位,元素并不脫離文檔流良价,因此元素原本的位置會被保留寝殴,其他的元素位置不會受到影響蒿叠。
- absolute:
- 設(shè)置了absolute的元素如果存在有祖先元素設(shè)置了position屬性為relative或者absolute,則這時元素的定位對象為此已設(shè)置position屬性的祖先元素蚣常。
- 如果并沒有設(shè)置了position屬性的祖先元素市咽,則此時相對于body進行定位。
- fixed: 它參照的坐標(biāo)系是瀏覽器的窗口抵蚊,固定定位的元素不隨著頁面滾動而移動施绎,它會始終保持在那個位置。
- sticky:在屏幕范圍(viewport)時該元素的位置并不受到定位影響(設(shè)置top贞绳、left等屬性無效)谷醉,當(dāng)該元素的位置將要移出偏移范圍時,定位又會變成fixed熔酷,根據(jù)設(shè)置的left孤紧、top等屬性成固定位置的效果。
4. z-index 有什么作用? 如何使用?
絕對定位與文檔流無關(guān)拒秘,所以絕對定位的元素可以覆蓋頁面上的其他元素号显,可以通過z-index屬性控制疊放順序。z-index的值越高躺酒,元素位置越靠上押蚤。
5. position:relative和負margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative;相對自己原本位置發(fā)生偏移,在文檔流中仍占據(jù)原來的空間羹应,不影響其它普通流中元素的位置揽碘。
負margin在改變自身位置的情況下,也會影響頁面上其他元素的定位园匹。
6. BFC 是什么雳刺?如何生成 BFC?BFC 有什么作用裸违?舉例說明
- 具有 BFC 特性的元素可以看作是隔離了的獨立容器掖桦,容器里面的元素不會在布局上影響到外面的元素
- 生成BFC:
- body 根元素
- 浮動元素:float 除 none 以外的值
- 絕對定位元素:position (absolute、fixed)
- display 為 inline-block供汛、table-cells枪汪、flex
- overflow 除了 visible 以外的值 (hidden、auto怔昨、scroll)
- 作用:
- 防止垂直 margin 合并
- 清除內(nèi)部浮動
- 自適應(yīng)兩欄布局 (BFC的區(qū)域不會與float box重疊)
7. 在什么場景下會出現(xiàn)外邊距合并雀久?如何合并?如何不讓相鄰元素外邊距合并趁舀?給個父子外邊距合并的范例
當(dāng)兩個垂直外邊距相遇時赖捌,它們就會合并。合并后的外邊距的高度等于兩個發(fā)生合并的外邊距的高度中的較大者矮烹。當(dāng)兩個外邊距都為負數(shù)時越庇,取其絕對值的較大者奋隶,當(dāng)兩個外邊距為一正一負時,取兩者的和悦荒。
防止合并的方法:
生成BFC
加上border或者padding
代碼
alert
表單
模態(tài)框
導(dǎo)航欄
transform: translate(-50%,-50%);
cursor: pointer;
outline: none;
box-shadow疊加;
<input>是塊狀元素,可以加邊框看
div:after{content=‘’嘹吨;clear:both;} 撐起高度
positon:absolute和relative