CSS學習筆記——CSS的定位問題

學習CSS佈局的時候,對position的認識一直不是很清晰,以致於面試的時候回答的不清楚,現在好好的梳理一下這個問題。

CSS 有三種基本的定位機制:1.普通流  2.浮動  3.絕對定位 

1. 普通流:除非專門指定,否則所有框(divh1 或 元素常常被稱爲塊級元素。這意味着這些元素顯示爲一塊內容,即“塊框”)都在普通流中定位。即,普通流中的元素的位置由元素在 (X)HTML 中的位置決定。

2. 浮動:CSSfloat屬性允許用戶對元素進行向左向右浮動

3. 絕對定位:CSSposition屬性允許用戶對元素進行定位。

 

下面是position的四種不同類型的屬性值及含義。

1. static

    position的默認值,一般不設置position屬性時,會按照正常的文檔流進行排列。

塊級元素生成一個矩形框,作爲文檔流的一部分,行內元素則會創建一個或多個行框,置於其父元素中

2. relative

元素框偏移某個距離。元素仍保持其未定位前的形狀,它原本所佔的空間仍保留。

relative的偏移是基於對象本身的位置,基於對象margin的左上側的。

    若有設置padding,則padding內邊界開始的

3. absolute

(1)當該元素的父級對象設置了position屬性,且position的屬性值爲absolute或者relative時,即不是默認值的情況下,當前元素按照這個parent來進行定位。

(使用absoulte,必須指定 leftright、 top、 bottom 屬性中的至少一個,否則left/right/top/bottom屬性會使用它們的默認值 auto ,這將導致對象遵從正常的HTML佈局規則,在前一個對象之後立即被呈遞,簡單講就是都變成relative,會佔用文檔空間 變成relative的效果

(2)那元素按照這個parent來進行定位時,是按照定位點來進行定位呢?如果parent設定了marginborderpadding等屬性,那麼這個定位點將忽略padding,將會從padding開始的地方(即只從padding的左上角開始)進行定位

注意:當父級對象position設置爲absolute後,當前元素會導致溢出正常的文檔流,就像它不屬於 parent一樣,它漂浮了起來,此時它後面的同級元素將獲得當前元素的位置,它的文檔流不再基於當前元素,而是直接從父級元素開始。

4. fixed

      使用fixed定位的話,必須指定 leftright、 top、 bottom 屬性中的至少一個。原因同上absolutefixed是特殊的absolute,即fixed總是以body爲定位對象的,按照瀏覽器的窗口進行定位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章