1. 程式人生 > >HTML中的幾種定位方式

HTML中的幾種定位方式

1,static(預設)

當你沒有為一個元素(例如div)指定定位方式時,預設為static,也就是按照文件的流式(flow)定位,將元素放到一個合適的地方。所以在不同的解析度下,採用流式定位能很好的自適合,取得相對較好的佈局效果。

一般來說,我們不需要指明當前元素的定位方式是static——因為這是預設的定位方式。除非你想覆蓋從父元素繼承來的定位系統。

2,relative(相對定位)

在static的基礎上,如果我想讓一個元素在他本來的位置做一些調整(位移),我們可以將該元素定位設定為relative,同時指定相對位移(利用top,bottom,left,right)。

有一點需要注意的是,相對定位的元素仍然在文件流中

,仍然佔據著他本來佔據的位置空間——雖然他現在已經不在本來的位置了。

3,absolute(絕對定位)

如果你想在一個文件(Document)中將一個元素放至指定位置,你可以使用absolute來定位,將該元素的position設定為absolute,同時使用top,bottom,left,right來定位。

絕對定位會使元素從文件流中被刪除,結果就是該元素原本佔據的空間被其它元素所填充。

4,mix relative and absolute(混合相對定位和絕對定位)

如果對一個父元素設定relative,而對它的一個子元素設定absolute,如:

1

2

3

4

<div id="parent" style="position:relative">

<div id="child" style="position:absolute">

</div>

</div>

則子元素的絕對定位的參照物為父元素

利用混合定位,我們可以用類似下面的css來實現兩列(Two Column)定位

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#div-parent {

position:relative;

}

#div-child-right {

position:absolute;

top:0;

right:0;

width:200px;

}

#div-child-left {

position:absolute;

top:0;

left:0;

width:200px;

}

5, fixed(固定定位)

我們知道absolute定位的參照物是“上一個定位過的父元素(static不算)”,那麼如果我想讓一個元素定位的參照物總是整個文件(viewport),怎麼辦呢?

答案是使用fixed定位,fixed定位的參照物總是當前的文件。利用fixed定位,我們很容易讓一個div定位在瀏覽器文件的左上,右上等方位。比如你想新增一個資訊提示的div,並將該div固定在右上方,你可以使用以下css

1

.element  { position:fixed; top:2%; right:2%; }

6,float(浮動)

對於浮動,需要了解的是:

*浮動會將元素從文件流中刪除,他的空間會被其它元素補上。

*浮動的引數物是父元素,是在父元素這個容器中飄。

*為了清除浮動造成的對浮動元素之後元素的影響,我們在浮動元素之後加一個div,並將這個div的clear設定為both。

*如果兩個元素都設定了浮動,則兩個元素並不會重疊,第一個元素佔據一定空間,第二個元素緊跟其後。如果不想讓第二個元素緊跟其後,可以對第二個浮動的元素使用clear。

7,reference

Value Description
static Elements renders in order, as they appear in the document flow. This is default.
absolute The element is positioned relative to its first positioned (not static) ancestor element
fixed The element is positioned relative to the browser window
relative The element is positioned relative to its normal position, so "left:20" adds 20 pixels to the element's LEFT position
inherit The value of the position property is inherited from the parent element