position定位有哪幾種漾抬?各有什么特點?

今天給大家分享一下岂座,深度思考中的知識點——position定位有哪幾種?各有什么特點?

一陶因、背景介紹
POSITION是CSS中非常重要的一個屬性,通過position屬性巷嚣,我們可以讓元素相對于其正常位置喘先,父元素或者瀏覽器窗口進行偏移。

二廷粒、知識剖析
position概念:
CSS的很多其他屬性大多容易理解窘拯,比如字體,文本坝茎,背景等涤姊。有些CSS書籍、博客或網(wǎng)站也會對這些簡單的屬性進行大張旗鼓的介紹嗤放,而偏偏忽略了對一些難纏的屬性講解思喊,有避重就輕的嫌疑。CSS中主要難以理解的屬性包括盒型結構斤吐,各種垂直居中問題搔涝、彈性布局以及定位厨喂。
正如position is everything.
position屬性值:
position的屬性值共有四個常用的:static、relative庄呈、absolute蜕煌、fixed。
還有三個不常用的:inherit诬留、initial斜纪、sticky

三、知識詳解
Static
所有元素在默認的情況下position屬性均為static文兑,而我們在布局上經(jīng)常會用到的相對定位和絕對定位常用的屬性top盒刚、bottom、left绿贞、right或者 z-index
聲明在position為static的情況下無效因块。其用法為:在改變了元素的position屬性后可以將元素重置為static讓其回歸到頁面默認的文檔流中。

Relative
relative定位籍铁,又稱為相對定位涡上,從字面上來解析,我們就可以看出該屬性的主要特性:相對拒名。但是它相對的又是相對于什么地方而言的呢吩愧?這個是個重點,也是最讓我在學習CSS中迷糊的一個地方增显,現(xiàn)在讓我們來做個測試雁佳,我想大家都會明白的:
(1) 初始未定位


圖片.png

(2) 我們修改first元素的position屬性:
相對偏移20px后:


圖片.png

已經(jīng)很明顯了,相對定位相對的是它原本在文檔流中的位置而進行的偏移同云,而我們也知道relative定位也是遵循正常的文檔流糖权,它沒有脫離文檔流,但是它的top/left/right/bottom屬性是生效的梢杭,可以說它是static到absoult的一個中間過渡屬性温兼,最重要的是它還占有文檔空間秸滴,而且占據(jù)的文檔空間不會隨top / right / left / bottom 等屬性的偏移而發(fā)生變動武契,也就是說它后面的元素是依據(jù)虛線位置( top / left / right / bottom等屬性生效之前)進行的定位,這點一定要理解荡含。

        小擴展
        那好咒唆,我們知道了top / right / left / bottom 屬性是不會對relative定位的元素所占據(jù)的文檔空間產生偏移,那么margin /
        padding屬性會讓該文檔空間產生偏移嗎释液?
        答案是肯定的全释,我們一起來做個試驗吧:

(3) 添加margin屬性:
設置margin:20px后:

圖片.png

對比一下,答案一目了然误债,我們先將first元素外邊距設為20px浸船,那么second元素就得向下偏移40px妄迁,所以margin是占據(jù)文檔空間!

同理李命,大家可以自己動手測下padding的效果登淘!

Absolute
absolute定位,也稱為絕對定位封字,雖然它的名字號曰“絕對”黔州,但是它的功能卻更接近于"相對"一詞,為什么這么講呢阔籽?原來流妻,使用absolut定位的元素脫離文檔流后,就只能根據(jù)祖先類元素(父類以上)進行定位笆制,而這個祖先類還必須是以position非static方式定位的绅这,
舉個例子,a元素使用absolute定位在辆,它會從父類開始找起君躺,尋找以position非static方式定位的祖先類元素(Note!一定要是直系祖先才算.),直到html根標簽為止开缎。
這里還需要注意的是棕叫,relative和static方式在最外層時是以body標簽為定位原點的,而absolute方式在無父級是position非static定位時是以html作為原點定位奕删。
但是呢俺泣,我們都知道html和body元素相差大概有9px左右。我們來看下效果:

(4) 添加absolute屬性:
position: absolute;top :0;left : 0


圖片.png

看了上面的信息后完残,細心的同學肯定要問了伏钠,為什么absolute定位要加 top:0; left:0; 屬性,這不是多此一舉嗎谨设?
其實我們加上這兩個屬性是完全必要的熟掂,因為我們如果使用absolute或fixed定位的話,必須指定 left扎拣、right赴肚、 top、 bottom屬性中的至少一個二蓝,否則left/right/top/bottom屬性會使用它們的默認值 auto誉券,這將導致對象遵從正常的HTML布局規(guī)則,在前一個對象之后立即被呈遞刊愚,簡單講就是都變成relative踊跟,會占用文檔空間,這點非常重要鸥诽,很多人使用absolute定位后發(fā)現(xiàn)沒有脫離文檔流就是這個原因商玫,這里要特別注意~~~

小擴展
既然absolute是根據(jù)祖先類中的position非static元素進行定位的箕憾,那么祖先類中的margin/padding會不會對position產生影響呢?看個例子先:

(5) 在absolute定位中添加margin / padding屬性:


圖片.png

圖片.png

結果很明朗了拳昌,祖先類的margin會讓子類的absolute跟著偏移厕九,而padding卻不會讓子類的absolute發(fā)生偏移。
總結一下地回,就是absolute是根據(jù)祖先類的border進行的定位扁远。
Note : 充分了解Relative和Absolute的區(qū)別后,我們可以分析得出這個結論:(absolute)定位對象在可視區(qū)域之外會導致滾動條出現(xiàn)刻像。而放置(relative)定位對象在可視區(qū)域之外畅买,滾動條不會出現(xiàn)。這點在我們的前端頁面制作中需要多加注意~~~

Fixed
在很長的時間里细睡,這個屬性值因為兼容性問題谷羞,并沒有得到非常廣泛的應用(IE6未實現(xiàn)該屬性值)。fixed和absolute有很多共同點:
1.會改變行內元素的呈現(xiàn)模式溜徙,使display之變更為block湃缎。
2.會讓元素脫離文檔流,不占據(jù)空間蠢壹。
3.默認會覆蓋到非定位元素上嗓违。
fixed與absolute最大的區(qū)別在于:absolute的”根元素“是可以被設置的,而fixed則其”根元素“固定為瀏覽器窗口图贸。即當你滾動網(wǎng)頁蹂季,其元素與瀏覽器窗口之間的距離是恒定不變的。

三疏日、拓展知識
z-index屬性:
z-index偿洁,又稱為對象的層疊順序,它用一個整數(shù)來定義堆疊的層次沟优,整數(shù)值越大涕滋,則被層疊在越上面,當然這是指同級元素間的堆疊挠阁,如果兩個對象的此屬性具有同樣的值宾肺,那么將依據(jù)它們在HTML文檔中流的順序層疊,寫在后面的將會覆蓋前面的鹃唯。需要注意的是爱榕,父子關系是無法用z-index來設定上下關系的瓣喊,一定是子級在上父級在下坡慌。
Note:使用static 定位或無position定位的元素z-index屬性是無效的。

什么是文檔流藻三?
將窗體自上而下分成一行行, 并在每行中按從左至右的順序排放元素,即為文檔流洪橘。
只有三種情況會使得元素脫離文檔流跪者,分別是:浮動、絕對定位和相對定位熄求。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末渣玲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弟晚,更是在濱河造成了極大的恐慌忘衍,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卿城,死亡現(xiàn)場離奇詭異枚钓,居然都是意外死亡,警方通過查閱死者的電腦和手機瑟押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門搀捷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人多望,你說我怎么就攤上這事嫩舟。” “怎么了怀偷?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵家厌,是天一觀的道長。 經(jīng)常有香客問我椎工,道長像街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任晋渺,我火速辦了婚禮镰绎,結果婚禮上,老公的妹妹穿的比我還像新娘木西。我一直安慰自己畴栖,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布八千。 她就那樣靜靜地躺著吗讶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恋捆。 梳的紋絲不亂的頭發(fā)上照皆,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音沸停,去河邊找鬼膜毁。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瘟滨。 我是一名探鬼主播候醒,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杂瘸!你這毒婦竟也來了倒淫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤败玉,失蹤者是張志新(化名)和其女友劉穎敌土,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體运翼,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡纯赎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了南蹂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犬金。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖六剥,靈堂內的尸體忽然破棺而出晚顷,到底是詐尸還是另有隱情,我是刑警寧澤疗疟,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布该默,位于F島的核電站,受9級特大地震影響策彤,放射性物質發(fā)生泄漏栓袖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一店诗、第九天 我趴在偏房一處隱蔽的房頂上張望裹刮。 院中可真熱鬧,春花似錦庞瘸、人聲如沸捧弃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽违霞。三九已至,卻和暖如春瞬场,著一層夾襖步出監(jiān)牢的瞬間买鸽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工贯被, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眼五,地道東北人妆艘。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像弹砚,于是被迫代替她去往敵國和親双仍。 傳聞我的和親對象是個殘疾皇子枢希,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容