CSS浮動與定位

問答

1. 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響?

  • 浮動元素有什么特征
    float 屬性可以使一個元素脫離正常的文檔流,然后被安放到它所在容器的的左端或者右端,并且其他的文本和行內元素環繞它。
  • 對父容器的影響
    如果父容器內的元素均為浮動元素,且父容器未設置height值,會出現父容器高度塌陷
  • 對其他浮動元素的影響
    同為float: left 或者 float: right的元素,會按照定義的先后順序進行排列,一行內放不下時會另起一行繼續排列;
    如果給某個浮動元素設置了clear:left屬性,則該元素左側不允許有浮動元素,如果已經有浮動元素在該元素左側,則該元素會換行,甚至可能出現被卡住的情況,clear:right及clear:both屬性類似
  • 對普通元素的影響;
    普通元素會因為感知不到浮動元素的存在而占據浮動元素的位置,可能導致被覆蓋;
  • 對文字的影響
    普通元素感知不到浮動元素的存在,但普通元素內的文字會感知到浮動元素的存在從而避開浮動元素進行顯示,會出現文字環繞的現象。

2. 清除浮動指什么? 如何清除浮動? 兩種以上方法

  • 清除浮動指什么
    如果父容器內的元素均為浮動元素,且父容器未設置height值,會出現父容器高度塌陷,清理浮動其實指的時清除掉父容器高度塌陷的問題
  • 如何清楚浮動

1 在父容器內添加空的標簽,并對該空標簽樣式設置為clear:both,使該空標簽左右均沒有浮動元素,從而使該標簽位置下移,以達到撐開父容器高度的目的
2 利用父容器的偽類選擇器給該父容器添加一個空的內容,達到撐開父容器高度的目的,代碼如下:

.父容器:after{
    content:"";
    display:block;
    clear:both;
  }

3 使父元素形成新的BFC以達到清楚浮動

3. 有幾種定位方式,分別是如何實現定位的,參考點是什么,使用場景是什么?

  • inherit:從父元素繼承;
  • static:默認值,沒有定位,元素出現在正常的文檔流中。參考點是文檔流中的位置。
  • relative:相對定位。相對于元素本身正常位置進行定位,通過top、bottom、left、right屬性來設置偏移量。使用場景:為絕對定位設定參照物或對元素自身位置進行局部調整。
  • absolute:絕對定位。相對于static定位意外的第一個祖先元素進行定位,若都沒有發現則以html標簽為參考進行定位。使用場景:當想讓元素參照特定參照物進行定位時使用。
  • fixed:固定定位。生成絕對定位元素,相對于viewport進行定位。
  • sticky:對象在常態時遵循普通流。它就像是relative和fixed的合體,當在屏幕中時按常規流排版,當卷動到屏幕外時則表現如fixed。

4. z-index 有什么作用? 如何使用

z-index 屬性指定了一個元素及其子元素的 z-order。 當元素之間重疊的時候,z-order 決定哪一個元素覆蓋在其余元素的上方顯示。 通常來說 z-index 較大的元素會覆蓋較小的一個。
對于一個已經定位的元素(即position屬性值是非static的元素),z-index 屬性指定:

  • 元素在當前堆疊上下文中的堆疊層級。
  • 元素是否創建一個新的本地堆疊上下文。

語法:

/* Keyword value */
z-index: auto;
/* <integer> values */
z-index: 0;
z-index: 3;
z-index: 289;
z-index: -1;/* 使用負值降低優先級 */

/* Global values */
z-index: inherit;
z-index: initial;
z-index: unset;
  • auto
    元素不會建立一個新的本地堆疊上下文。當前堆疊上下文中新生成的元素和父元素堆疊層級相同。
  • <integer>
    整型數字是生成的元素在當前堆疊上下文中的堆疊層級。元素同時會創建一個堆疊層級為0的本地堆疊上下文。這意味著子元素的 z-indexes 不與元素外的其余元素的 z-indexes 進行對比。

5.position:relative和負margin都可以使元素位置發生偏移?二者有什么區別

  • position:relative使元素位置發生偏移時,只是改變了該元素的顯示位置,并未改變該元素在文檔流中本來的位置,會與其他元素產生視覺上的重疊現象;
  • 負margin改變元素位置時同時改變該元素在文檔流中的位置;

6. BFC 是什么?如何生成 BFC?BFC 有什么作用?舉例說明

6.1 BFC 是什么

block formatting context,塊級格式化上下文

6.2 如何生成 BFC

塊格式化上下文由以下之一創建:

  • 根元素或其它包含它的元素
  • 浮動 (元素的float不是 none)
  • 絕對定位的元素 (元素具有position為 absolute 或 fixed)
  • 內聯塊 inline-blocks (元素具有 display: inline-block)
  • 表格單元格 (元素具有 display: table-cell,HTML表格單元格默認屬性
    )
  • 表格標題 (元素具有 display: table-caption, HTML表格標題默認屬性)
  • 塊元素具有overflow且值不是 visible
6.3 BFC 有什么作用
  • BFC會阻止垂直外邊距(margin-top、margin-bottom)折疊
    按照BFC的定義,只有同屬于一個BFC時,兩個元素才有可能發生垂直Margin的重疊,這個包括相鄰元素,嵌套元素,只要他們之間沒有阻擋(例如邊框,非空內容,padding等)就會發生margin重疊。
    因此要解決margin重疊問題,只要讓它們不在同一個BFC就行了,但是對于兩個相鄰元素來說,意義不大,沒有必要給它們加個外殼,但是對于嵌套元素來說就很有必要了,只要把父元素設為BFC就可以了。這樣子元素的margin就不會和父元素的margin發生重疊
    例子:
父子元素上下margin合并
父子元素上下margin未合并
  • BFC不會重疊浮動元素
    例子:
浮動元素重疊.png
浮動元素未重疊.png
  • BFC可以包含浮動
    例子:
父容器高度塌陷.png
高度被撐開.png

7. 在什么場景下會出現外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例

7.1 在什么場景下會出現外邊距合并
  • 兄弟元素同處于一個BFC時,會出現上下margin合并的現象
  • 當父子元素中的父元素沒有border或padding時,且父元素不是BFC時,父子元素的上下margin會出現合并
7.2 如何合并

合并后的margin值取值為所合并的兩者中的大者

7.3 如何不讓相鄰元素外邊距合并?

可以把相鄰元素處于不同的BFC中從而阻止邊距合并

例子.png
7.4 給個父子外邊距合并的范例

請見6.3的第一個例子

代碼1
代碼2
代碼3
代碼4

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,777評論 1 92
  • 1.浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 答:浮動模型也是一種可視化格式模型...
    饑人谷_牛牛閱讀 400評論 0 0
  • 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動元素脫離了普通文檔流,文檔的普通流...
    Zzzoecho閱讀 232評論 0 0
  • 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 4.對普通元素:普通元素將不能感知到浮...
    l_meng閱讀 314評論 0 0
  • 1.浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動模型也是一種可視化格式模型,浮...
    謹言_慎行閱讀 421評論 0 3