CSS之Position詳解
CSS之Position詳解
CSS的很多其他屬性大多容易理解,比如字型,文字,背景等。有些CSS書籍也會對這些簡單的屬性進行大張旗鼓的介紹,而偏偏忽略了對一些難纏的屬性講解,有避重就輕的嫌疑。CSS中主要難以理解的屬性包括盒型結構,以及定位。正如positioniseverything,本文將主要講述關於position的理解,力求讓您看完本文後對position有著最全面的認識。
position的四個屬性值:
- relative
- absolute
- fixed
- static
下面分別講述這四個屬性。
<div id=”sub1″>sub1</div>
<div id=”sub2″>sub2</div>
</div>
1. relative
relative屬性相對比較簡單,我們要搞清它是相對哪個物件來進行偏移的。答案是它本身的位置。在上面的程式碼中,sub1和sub2是同級關係,如果設定sub1一個relative屬性,比如設定如下CSS程式碼:
{
position: relative;
padding: 5px;
top: 5px;
left: 5px;
}
我們可以這樣理解,如果不設定relative屬性,sub1的位置按照正常的文件流,它應該處於某個位置。但當設定sub1為的position為relative後,將根據top,right,bottom,left的值按照它理應所在的位置進行偏移,relative的“相對的”意思也正體現於此。
對於此,您只需要記住,sub1如果不設定relative時它應該在哪裡,一旦設定後就按照它理應在的位置進行偏移。
隨後的問題是,sub2的位置又在哪裡呢?答案是它原來在哪裡,現在就在哪裡,它的位置不會因為sub1增加了position的屬性而發生改變。
如果此時把sub2的position也設定為relative,會發生什麼現象?此時依然和sub1一樣,按照它原來應有的位置進行偏移。
注意relative的偏移是基於物件的margin的左上側的。
2. absolute
這個屬性總是有人給出誤導。說當position屬性設為absolute後,總是按照瀏覽器視窗來進行定位的,這其實是錯誤的。實際上,這是fixed屬性的特點。
當sub1的position設定為absolute後,其到底以誰為物件進行偏移呢?這裡分為兩種情況:
(1)當sub1的父物件(或曾祖父,只要是父級物件)parent也設定了position屬性,且position的屬性值為absolute或者relative時,也就是說,不是預設值的情況,此時sub1按照這個parent來進行定位。
注意,物件雖然確定好了,但有些細節需要您的注意,那就是我們到底以parent的哪個定位點來進行定位呢?如果parent設定了margin,border,padding等屬性,那麼這個定位點將忽略padding,將會從padding開始的地方(即只從padding的左上角開始)進行定位,這與我們會想當然的以為會以margin的左上端開始定位的想法是不同的。
接下來的問題是,sub2的位置到哪裡去了呢?由於當position設定為absolute後,會導致sub1溢位正常的文件流,就像它不屬於 parent一樣,它漂浮了起來,在DreamWeaver中把它稱為“層”,其實意思是一樣的。此時sub2將獲得sub1的位置,它的文件流不再基於 sub1,而是直接從parent開始。
(2)如果sub1不存在一個有著position屬性的父物件,那麼那就會以body為定位物件,按照瀏覽器的視窗進行定位,這個比較容易理解。
3. fixed
fixed是特殊的absolute,即fixed總是以body為定位物件的,按照瀏覽器的視窗進行定位。
4. static
position的預設值,一般不設定position屬性時,會按照正常的文件流進行排列。
absolute和fixed的區別:
區別很簡單:
1、absolute的相對位置分為兩種情況,在相對於body的情況下
(1)沒有滾動條的情況下沒有差異
(2)在有滾動條的情況下,fixed定位不會隨滾動條移動而移動,而absolute則會隨滾動條移動
相關文章
- CSS之positionCSS
- CSS之定位PositionCSS
- CSS中position屬性( absolute | relative | static | fixed )詳解CSS
- Position定位詳解
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- css詳解position五種屬性用法及其含義CSS
- css positionCSS
- 解決CSS position:fixed 相容問題CSS
- CSS position:sticky與position:fixed 區別CSS
- CSS的定位:positionCSS
- CSS background-positionCSS
- css的position:absoluteCSS
- css3系列之詳解perspectiveCSSS3
- CSS position:sticky 粘性定位CSS
- CSS position: sticky 粘性定位CSS
- CSS position定位(fixed、sticky)CSS
- CSS position: relative 相對定位CSS
- CSS position: absolute 絕對定位CSS
- CSS position:absolute 絕對定位CSS
- CSS position:relative 相對定位CSS
- css [background-position] 單位CSS
- CSS:層疊樣式表—positionCSS
- 淺談CSS中的Position(定位)CSS
- css定位詳解CSS
- CSS 定位詳解CSS
- css的position-relative相容問題與解決辦法CSS
- css 盒子模型和position總結CSS模型
- 好程式設計師web前端分享CSS基礎知識之position程式設計師Web前端CSS
- css浮動詳解CSS
- web前端css定位position和起浮floatWeb前端CSS
- CSS-背景位置-x|background-position-xCSS
- CSS盒子模型詳解CSS模型
- CSS定位屬性詳解CSS
- CSS 選擇器詳解CSS
- CSS偽類使用詳解CSS
- jQuery原始碼解析之position()jQuery原始碼
- 【CSS】CSS簡介,CSS基礎選擇器詳解CSS
- CSS 中的 float、BFC、position 和 inline-blockCSSinlineBloC
- 詳解css媒體查詢CSS