1.absolute;絕對定位;對象從文檔流中抽取出來;也就是說該對象在dom中已經不佔位置了。
那麼如何定位呢?分爲兩種情況:
(1).父節點的position爲relative,這種情況下,設置top和left值,則相對的座標原點爲父節點當前位置,
(2).父節點的position爲其他屬性,那麼設置top和left值,則相對於body。
兩者都採用z-index設置層疊,採用top和left定位。
以上(1)(2)情況兼容IE678,FF,chrome,其他未測。
這兩種做法中,若不設置top和left的默認值,在IE67下根據其他元素定位不同會發生其他未預料情況,而在IE8及其它瀏覽器下top和left的默認值均爲0;在IE67下設置了position:absolute,而未設置其top和left值,會造成不期待的定位錯誤,但一旦設置了,又和其它瀏覽器無異,我反覆測試,尚無靈感。
以上是具有較好兼容性的寫法。而且設置父節點爲relative亦能解決IE6下浮動雙邊距的問題,何樂而不爲呢?
(3)無論是否設置父節點爲relative,任何設置爲absolut的對象都能設置margin屬性,在定位上和top與left可以達到相同效果,雖然也可以用,但定義中寫此時對象已經不再具有邊距了。至於爲什麼可以用,誰又知道呢?他們的“盒子”出身永遠沒變~
2.relative;相對定位,可用z-index來設置層疊,讓對象保留文檔流裏的位置,又能控制層疊。難道relative的一個重要作用應該在這?又或者是去限制一個無家可歸的absolute層?
[使用相對定位後,對象不可層疊]這句話我一直沒太理解。默認的static,在此基礎上加上relative對佈局位置不會造成任何影響。仍然是原來那一堆盒子。但這個有relative屬性的盒子變強大了:
- 可以通過top和left來設置偏移量,相對它原來的位置,而不會對別的元素造成任何影響,無論顯示在哪,它的根依然在原地;
- 可以設置z-index屬性,控制與其他的relative層亦或是遊蕩的absolute的層疊關係;
- 可以收留absolute孩子了;
居中
position:relative;
margin-left:auto;
margin-right:auto;