CSS 筆記 | Position

閱讀時間約 4 分鐘
最近在練習切版,除了大家非常熟悉的 grid 和 flex 常用到外,還有一個也非常重要的元素定位方式也時不時會需要用到,它就是今天的主角 — Position 啦!
先附上我練習 position 的 Codepen 內容,大家看文字比對 Codepen 中的畫面和 CSS 會比較清楚每個 position 屬性的差異。

Position 的屬性有五個:static, relative, absolute, fixed, sticky。若我們沒有專門去對元素設定 position,那預設的 position 就會是 static,這個很重要,因為會影響等等會講到的 absolute 定位結果。

Position: relative

Relative 的效果在尚未設定 top, bottom, left, right 時看起來是跟 static 差不多的,但也就是剛剛提到的 relative 可以透過設定 top, bottom, left, right 來相對地調整其原先的位置。
Position: relative
我們可以看到 relative block 1 並未設定任何 top, bottom, left, right 的值,所以看起來跟 static block 是一樣的。
但 relative block 2,我給了它 left: 100px,於是它就從原先的位置左邊推開 100px 的空隙,這就是 positon: relative 的功能。

Position: absolute

Absolute 又比 relative 複雜一點,relative 定位參照的是原先自己的位置,absolute 參照的則是父層的位置。
Absolute 把父層作為參照基準是有規則的:父層的 position 不得為 static。也就是說一但父層的 position 我們沒有專門去設定,仍然維持為 static 的狀態,那 position 設定為 absolute 的元素就不會拿它當參照點,而是會往外去找 position 不是 static 的層當參照點,這也是為什麼很多時候一把元素設為 absolute,版面就飛走的原因。
Position: absolute
absolute block 1 的父層 (黑框區塊) 因為沒設定 position,所以 absolute block 1 直接去找 viewport 做對照,然後就,啪,飛走了....
absolute block 2 的父層因為設定為 relative,因此被拿來當參照點,所以版面沒有飛掉。

Position: fixed

Fixed 又是一個神奇的東西,基本上完全可以把它想像成有一根圖釘把一個元素一直釘在你的視窗上,無論你如何滾動你的視窗,它依然都在那個位置,比如說 Facebook 最上層的那個功能列。
固定在視窗的意思就是它的參照基準是視窗的位置,我們依然可以透過 top, bottom, left, right 來決定該元素要被“釘”在視窗的哪個位置。
Position: fixed
因為我把 fixed block 的 top, right 都設定成 0,因此 fixed block 會直接貼在視窗的最右上角,接下來無論我們如何捲動視窗,都會看到它依然在右上角的位置,換句話說,它已經被“釘”住啦!

Position: sticky

這是一個很類似 fixed 的屬性,但它跟 fixed 不一樣的地方是它一開始不會出現,要一直捲動到這個元素超過畫面時,sticky 才會作用把這個元素固定在畫面的某處,聽起來很抽象對吧,建議在上面的 Codepen 玩玩看會比較清楚是什麼意思。
Position: fixed
上圖可以看到,因為我設定 sticky block 的 postion 為 sticky,然後 top: 0,因此當畫面捲動超過 sticky block 時,sticky block 開始會被固定在畫面的最上方,產生跟 fixed 類似的效果。

參考資料

  1. 學習 CSS 版面配置
  2. [CSS] 當畫面捲動到超過畫面時讓元素固定在頁面某處- position: sticky
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
18會員
37內容數
這個專題用來存放我在學習網頁開發時的心得及知識。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
在當今日新月異的數位時代,網站已經不僅僅是一個給人們提供資訊的平臺,更是一個互動性、視覺吸引力和功能性兼具的數位體驗。而CSS(Cascading Style Sheets)正是網站設計中的一個重要元素,扮演著關鍵的角色。
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
相信大家對於 sticky 這個效果不陌生,網頁上方的導覽列、文章側邊的相關閱讀等,諸多網頁都能看見它的身影,不過這篇不是 sticky 的使用教學,而是我自己的踩雷紀錄😅💣
Thumbnail
自學程式的過程中,你總是把transform、transition,甚至是translate搞混嗎!為了分辨「轉變」的三個關係字,並理解到底什麼時候要用哪個屬性才正確,這篇筆記誕生了!
Thumbnail
這是一篇關於 CSS 動畫屬性的學習筆記,如果你剛好也在學習的話,歡迎進來看看!
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
source code: E 提供兩個範例,其實before, after就如同字面上的意思,會在前後加上內容。 範例1簡單的在前後加上文字,如下所示,需特別注意,是在div內的範例1前後加上文字。 before/after除了可以加上文字以外,還可以作為裝飾效果。如範例2,利用position調
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
在當今日新月異的數位時代,網站已經不僅僅是一個給人們提供資訊的平臺,更是一個互動性、視覺吸引力和功能性兼具的數位體驗。而CSS(Cascading Style Sheets)正是網站設計中的一個重要元素,扮演著關鍵的角色。
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
相信大家對於 sticky 這個效果不陌生,網頁上方的導覽列、文章側邊的相關閱讀等,諸多網頁都能看見它的身影,不過這篇不是 sticky 的使用教學,而是我自己的踩雷紀錄😅💣
Thumbnail
自學程式的過程中,你總是把transform、transition,甚至是translate搞混嗎!為了分辨「轉變」的三個關係字,並理解到底什麼時候要用哪個屬性才正確,這篇筆記誕生了!
Thumbnail
這是一篇關於 CSS 動畫屬性的學習筆記,如果你剛好也在學習的話,歡迎進來看看!
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
source code: E 提供兩個範例,其實before, after就如同字面上的意思,會在前後加上內容。 範例1簡單的在前後加上文字,如下所示,需特別注意,是在div內的範例1前後加上文字。 before/after除了可以加上文字以外,還可以作為裝飾效果。如範例2,利用position調