絕對定位常見誤區:position:absolute相對於誰定位、及當溢出時怎麼隱藏

一、絕對定位元素溢出父元素,怎麼隱藏問題?css

  一般,爲了讓DIV子元素超出部分隱藏,都是在父元素設置overflow:hidden,這樣便可防止子元素撐開父元素,使子元素可以溢出隱藏!spa

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

  絕對定位元素相對的元素是它最近的一個祖先,該祖先知足:position的值必須是:relative、absolute、fixed,若沒有這樣的祖先則相對於body進行定位。偏移值由其top、bottom、left、right值肯定。blog

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

二、絕對定位常見誤區:it

  一般咱們常據說:CSS絕對定位在沒有其餘有除static定位的包含塊的狀況下是以body進行定位,若是要想相對當前元素的父元素來定位,父元素必定要設置position:relative。io

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

  正確的理解姿式是:im

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

  絕對定位:絕對定位的盒子是相對於離它最近的一個已定位的盒子進行定位的(默認是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;

相關文章
相關標籤/搜索