首頁  >  文章  >  web前端  >  關於CSS浮動、定位的詳細說明

關於CSS浮動、定位的詳細說明

高洛峰
高洛峰原創
2017-03-15 11:20:351878瀏覽

關於CSS浮動、定位的詳細說明

#一、文檔流的概念指什麼?有哪種方式可以讓元素脫離文檔流程?

  • 文檔流,指的是元素排版佈局過程中,元素會自動從左到右,從上往下的流式排列。並最終窗體自上而下分成一行行,並在每行中按從左到右的順序排放元素。脫離文檔流即是元素打亂了這個排列,或是從排版中拿走。

  • 讓元素脫離文件流的方法有:浮動和定位。

二、有幾種定位方式,分別是如何實現定位的,使用場景如何?

CSS定位方式有四種:預設定位(static)、相對定位(relative)、絕對定位(absolute)和固定定位(fixed)

關於CSS浮動、定位的詳細說明

  • relative:產生相對定位的元素,透過top,bottom,left,right的位置相對於其正常位置進行定位。其中的相對指的是相對於元素在預設流中的位置。

注意:

1.將元素position屬性設為relative之後,再透過top,bottom,left,right屬性對其進行相對於原來位置的偏移;

2.元素偏移之後,他本來在默認文檔流中佔據的位置仍然存在,其緊挨其後的元素的定位依據它本來的位置定位;

3.該元素偏移之後,可能存在覆蓋其他元素的情況,可以使用z-index屬性顯示層級有限層級。

範例:

關於CSS浮動、定位的詳細說明

第二個盒子元素相對於先前的位置(虛線部分)向下平移了20px,向右平移了30px。

要想讓第三個區塊級元素被遮蔽的部分浮現出來,我們可以使用以下程式碼實作:

關於CSS浮動、定位的詳細說明

##注意:使用z-index必須確保元素的樣式含有定位方式,之前忘了給box3添加定位方式,導致z-index對box3不起作用。

  • absolute:產生絕對定位的元素,相對於static定位外的第一個父元素進行定位。

注意:

1.絕對定位的元素已經脫離了文檔流,普通流中其他元素的佈局就像絕對元素不存在一樣;

2.絕對定位的元素的位置是相對於最近的已定位的祖先元素,如果元素沒有已定位的祖先元素,它的位置就相對於body;

##3.絕對定位的框可以覆蓋頁面的其他元素。

範例:

關於CSS浮動、定位的詳細說明這種情況是離box2最近的父元素已定位的情況,如果離box2最近的父元素沒有定位的話,範例如下:

關於CSS浮動、定位的詳細說明

    fixed:本質上是絕對定位,不為元素預留空間。透過指定相對於螢幕視窗的位置來指定元素的空間,且元素的位置在螢幕滾動時不會改變。套用於許多網站頂端的固定
  • 導航

    、右下角的固定廣告等等。

  • 範例:

關於CSS浮動、定位的詳細說明

三、absolute, relative, fixed偏移的參考點分別是什麼?

absolute偏移的參考點是:相對於最近的已定位的父元素,如果沒有,則相對於body元素;

relative偏移的參考點是:相對於元素在普通串流中的原來位置;

fixed偏移的參考點是:相對於瀏覽器視窗。

四、z-index 有什麼作用? 如何使用?

z-index屬性用於設定節點的堆疊順序,擁有更高堆疊順序的節點將顯示在堆疊順序較低的節點前面。

使用方法:範例

關於CSS浮動、定位的詳細說明

1.z-index只對定位元素有效(position:relative||absolute||fixed);

2.z-index只可比較同級元素

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

position:relative和負margin都可以使元素位置偏移,二者的差異表現在:

  • 負margin會使元素在文檔流中的位置發生偏移,它會放棄偏移之前佔據的空間,緊挨其後的元素會填充這部分空間;

  • 相對定位後元素位置發生偏移,它仍會堅守原來佔據的空間,不會讓文檔流的其他元素流入。

範例:

關於CSS浮動、定位的詳細說明

關於CSS浮動、定位的詳細說明

#六、如何讓一個固定寬高的元素在頁面上垂直水平居中?

可以用絕對定位和負margin,範例:

關於CSS浮動、定位的詳細說明

七、浮動元素有什麼特徵?對其他浮動元素、普通元素、文字分別有什麼影響?

  • 浮動元素的特徵有:

1.塊在一排顯示;

2.內聯元素支援寬高;

3.無論是區塊元素或內聯元素,沒有寬度時預設內容撐開寬度;

4.脫離文件流;

5.提升層級半級。

  • 對其他浮動元素的影響:後浮動的元素永遠不會超過先浮動元素的頂端。

  • 對普通元素的影響:浮動元素會從文件正常流中刪除,使得緊鄰它的元素位置發生偏移,影響佈局。

  • 對文字的影響:浮動元素向下延伸時,不會影響正常文字的顯示,文字會相對於浮動元素進行偏移。但部分文字背景會被浮動元素遮住。 (可參考大話FLOAT

浮動範例:

關於CSS浮動、定位的詳細說明

1、清除浮動指什麼? 如何清除浮動?

清除浮動指的是:在非IE瀏覽器(如Firefox)下,當容器的高度為auto,且容器的內容中有浮動(float為left或right)的元素,在這種情況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢出到容器外面而影響佈局的現象,為了防止這個現象的出現而進行的CSS處理,就叫CSS清除浮動。

清除浮動的方法:

1.使用帶有clear屬性的空元素

在浮動元素後使用一個空元素如<p class="clear"></p> ,並在CSS中賦予.clear{clear:both;} 屬性即可清理浮動。也可使用 <br class="clear"><hr class="clear"> 來進行清理。

2.使用CSS的overflow屬性

為浮動元素的容器新增overflow:hidden;或overflow:auto;可以清除浮動,另外在IE6 中還需要觸發hasLayout ,例如為父元素設定容器寬高或設定zoom:1。

3.使用CSS的:after偽元素

附加:關於使用clear:both清除浮動,一直都不太明白,還有就是對清除浮動的理解有誤,以為清除浮動之後,元素的渲染順序和普通流一樣,實際不是這樣的,下面給出我自己的理解,不足之處,歡迎大家批評指正。

  • 關於浮動

如下程式碼:

在父容器中新增一個背景圖片 ,圖片會依照普通流渲染

關於CSS浮動、定位的詳細說明

若是在此基礎上為背景圖片添加浮動,效果如下:

關於CSS浮動、定位的詳細說明

# #我們可以看到父元素高度塌陷,背景圖片脫離文檔流,所以此時父容器p補給高度了,讓我們為父容器添加點文字看看它的高度變化

關於CSS浮動、定位的詳細說明

父容器的高度被撐開了,有木頭!有木有!

所以子元素浮動使得父元素塌陷的原因是:因為沒有預先設定p高度,所以p高度由其包含的子元素高度決定。而浮動脫離文檔流,所以圖片並不會被計算高度。此時的p中,相當於p中子元素高度為0。

  • 一個困擾我很久的問題,跟大家分享下,上程式碼:

關於CSS浮動、定位的詳細說明

關於CSS浮動、定位的詳細說明

我不理解的點是:為什麼情況二中box2的寬度比情況一中box2的寬度大,情況二中的box2可以浮動上去,而情況一中的不可以呢?

答案是:因為情況一中寬度限制100px,所以box2文字不能靠右圍繞,所以只能往下。 對於情況2,因為寬度為200px,所以box2在這個寬度內可以圍繞box1

  • #關於clear:both 的理解:

Clear :both;其實就是利用清除浮動來把外層的p撐開,所以有時候,我們在將內部p都設置成浮動之後,就會發現,外層p的背景沒有顯示,原因就是外層的p沒有撐開,太小,所以能看到的背景僅限於一條線。

範例如下:

關於CSS浮動、定位的詳細說明

關於CSS浮動、定位的知識先說這麼多,有什麼不足的地方歡迎大家指正。

以上是關於CSS浮動、定位的詳細說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn