css中position屬性fixed於absolute的區別

這是摘抄自MDN中對於css屬性position的定義:

CSS position屬性用於指定一個元素在文檔中的定位方式。top,right,bottom 和 left 屬性則決定了該元素的最終位置

在日常編寫html開發時,我總想有一隻魔法棒該多好啊,只要一揮手,頁面上所有元素都能放在我想要放的位置。可是願望很美好,現實很殘酷,不但殘酷,還有個別不聽話的元素經常跟我們作對。

新需求來了

領導找到我說,我的產品要有這樣一個功能,在瀏覽器的最底端始終顯示我們公司軟件的下載按鈕,快去做!

拿到需求後心想,這還不簡單,這次分分鐘中給你搞定。於是我這樣寫下

css中position屬性fixed於absolute的區別

很完美的實現


然後信心滿滿的拿著我的傑作給產品經理看

css中position屬性fixed於absolute的區別

傑作

領導看完直說,小夥子不錯嗎,這麼快就完成了,看好你哦。得到領導的誇獎別說多興奮了 。

。。。

可是好景不長,半夜裡領導突然打電話說,有客戶投訴了,說咱麼這是什麼破產品,一個下載按鈕不在底下好好待著,亂跑!

css中position屬性fixed於absolute的區別

無法控制的絕對定位


吃了領導一頓劈頭蓋臉的批評,掛了電話,我陷入了深深的沉思。。我到底哪裡做錯了,明明用的absolute絕對定位,怎麼會出現這種情況呢。

哎,學藝不精又能怪誰呢,問題出現了,現在最重要的是怎麼快速解決吧

fixed出場

眾裡尋他千百度,慕然回首,你在mdn處。

原來css中絕對定位不只是absolute,還有一種叫做fixed的選項,MDN中這樣說明的

fixed:元素會被移出正常文檔流,並不為元素預留空間,而是通過指定元素相對於屏幕視口(viewport)的位置來指定元素位置。元素的位置在屏幕滾動時不會改變

相對於屏幕視口(viewport)的位置來指定元素位置,元素的位置在屏幕滾動時不會改變

一語驚醒夢中人啊,我那個absolute就是被滾動條滾動上去的啊,好想說一句MD.

於是我將我的absolute改成了fixed,終於解決了問題

同為絕對定位,區別在於哪裡呢

absolute的位置是相對於整個頁面,就像拿一個圖釘把它定在了頁面,頁面滾動元素也會跟著滾動。

而fixed定位呢,是相對於屏幕視口(viewport),即相對於我們肉眼看到的頁面屏幕,即使頁面滾動,我們的視口是不改變的,所以我們看到的元素就是不動的。

ps:文中的MDN是我經常學習的網站,著名瀏覽器Fixfox出品


分享到:


相關文章: