在CSS中,我們是通過position定位屬性來進行定位的换怖,它有如下幾個屬性值榜苫。常見的屬性有如下幾個:
absolute(絕對定位)
絕對定位的元素的位置相對于最近的已定位父元素刀荒,如果元素沒有已定位的父元素,那么它的位置相對于菱农。元素的位置通過 "left",
"top", "right" 以及"bottom" 屬性進行規(guī)定。absolute 定位使元素的位置與文檔流無關(guān)柿估,因此不占據(jù)空間循未。absolute 定位的元素和其他元素重疊。
例:{ position:absolute;
? ? left:100px;
? ? top:150px;}
fixed(固定定位)
生成絕對定位的元素秫舌,相對于瀏覽器窗口進行定位的妖。元素的位置通過"left", "top", "right" 以及"bottom" 屬性進行規(guī)定绣檬。?Fixed 定位在 IE7 和 IE8 下需要描述!DOCTYPE 才能支持。Fixed定位使元素的位置與文檔流無關(guān)嫂粟,因此不占據(jù)空間娇未。Fixed定位的元素和其他元素重疊。
relative(相對定位)
生成相對定位的元素星虹,相對于其正常位置進行定位零抬。因此,"left:20"會向元素的 LEFT 位置添加 20 像素宽涌。移動相對定位元素平夜,但它原本所占的空間不會改變。
最常見的使用方式有如下兩種:
使用方法一:元素相對自身的原位置偏移某個距離护糖,但是原本的空間依舊保留褥芒,表現(xiàn)為空白。
使用方法二:把一個元素設(shè)置為position: relative; 可以使該元素的子元素相對該元素絕對定位嫡良。
static(靜態(tài)定位)
它是position的默認值锰扶,元素框正常生成,也就是沒有定位時的正常顯示寝受。HTML元素的默認值坷牛,即沒有定位,元素出現(xiàn)在正常的流中很澄。靜態(tài)定位的元素不會受到 top,
bottom, left, right影響京闰。
例:
div.static { position: static;
? ? border: 4px solid #fff;}
從上文可以看出absolute/fixed都有種跟浮動同樣的效果,下面我們來將他們進行比較:
absolute/fixed和float對比相同之處:元素都會脫離文本流甩苛,從普通文本中刪除蹂楣,但是依舊會影響布局;都會生成一個塊級框,無論原來是不是塊級元素讯蒲。不同之處:float的包含塊是最近的塊級祖先元素痊土。
采用position定位之后必須采用偏移屬性定義偏移量,也就是相對包含塊的偏移墨林。在使用的時候需要注意的是:定義偏移量的元素應(yīng)為position值不是static的元素赁酝。有時也需要定義width和heigth,但是可能會和偏移屬性的定義沖突旭等,因為四個偏移屬性實際上已經(jīng)定義了元素的大小酌呆。此時,根據(jù)width和left屬性定義左右搔耕,根據(jù)top和height屬性定義上下隙袁。