1. 程式人生 > >position:absolute相對於誰定位以及當溢出時怎麽隱藏

position:absolute相對於誰定位以及當溢出時怎麽隱藏

沒有 mage pan inf 定位 聽說 上一個 註意 png

1、絕對定位元素溢出父元素,怎麽隱藏問題?

  通常,為了讓DIV子元素超出部分隱藏,都是在父元素設置overflow:hidden,這樣即可防止子元素撐開父元素,使子元素能夠溢出隱藏!

  但是,對於position:absolute定位的子元素,僅僅使用overflow:hidden沒辦法將其溢出部分隱藏,需要在父元素上也加上一個定位position:relative;才能將含有position:absolute屬性的子元素進行溢出隱藏!

  絕對定位元素相對的元素是它最近的一個祖先,該祖先滿足:position的值必須是:relative、absolute、fixed,若沒有這樣的祖先則相對於body進行定位

。偏移值由其top、bottom、left、right值確定。

  而絕對定位的元素若超出其父元素的邊界,要想將溢出的部分隱藏,則,想隱藏在哪個祖先裏,該祖先必須同時設置position:relative/absolute/fixed和overflow:hidden的值。

2、絕對定位常見誤區:

  通常我們常聽說:CSS絕對定位在沒有其他有除static定位的包含塊的情況下是以body進行定位,如果要想相對當前元素的父元素來定位,父元素一定要設置position:relative。

  註意,前面一句是沒有問題的,在沒有父元素設置定位的話,默認就是以body來定位的,但是後面一句,要想相對父元素定位,父元素必須設置相對定位(relative),根據我的開發經驗和查閱相關資料確認後發現,這是不對的。

  正確的理解姿勢是:

  相對定位:相對於塊級元素(或行內塊)自身位置進行定位;

  絕對定位:絕對定位的盒子是相對於離它最近的一個已定位的盒子進行定位的(默認是body);

  註意:css描述的絕對定位概念,沒有說明是離他最近的一個已相對定位的盒子進行定位的,所以離他最近的盒子的定位可以是相對定位(relative)和絕對定位(absolute)的,但是在開發中,一般是父盒子設置相對定位的,但是不代表只能是相對定位。

  舉個例子:

<div class="father">
   <div class="son"></div>
</div>


.father{
      width: 300px;
      height: 300px;
      background
-color: orange; position: absolute; top:50%; left:50%; margin-top: -150px; margin-left: -150px; } .son{ width: 100px; height: 100px; background-color: pink; position: absolute; left:0; top:0; }

  .father元素絕對定位是相對body的,這個沒問題,主要看.son元素,他自身設置絕對定位,父元素.father也有絕對定位,你覺得這個子元素會相對body定位還是父元素來定位呢?

技術分享圖片

  結果為:子元素是相對於有絕對定位的父元素來定位的,而不是body;

position:absolute相對於誰定位以及當溢出時怎麽隱藏