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
為什麼會看到廣告
avatar-img
18會員
37內容數
這個專題用來存放我在學習網頁開發時的心得及知識。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
可能包含敏感內容
這個文章提供了多年的地特三等作文題目,並提供每個題目的具體內容和提點。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
1.justify-content 用來控制主軸(水平)如何分配對齊 如果要改垂直對齊的話+上 flex-direction : column 2.align-item 他是控制子項目再交叉軸(垂直)的對齊方式 3.flex-shrink 收縮性! 當空間不足時預設會是1,等於是
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
這篇文章介紹了CSS Battle每週切版#107的解題方法。它深入講解了使用grid來處理圖案的方法,同時介紹了圖層堆疊、border-radius和z-index的使用。文章中還分享了使用position: relative;調整位置的技巧。本篇文章是前端工程師們進行基礎切版學習和練習的好材料。
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
介紹 大家第一次聽到,static 肯定很陌生。簡單來說,這個東西就是拿來存放一些我們經常會用到的檔案,比方說: CSS、JS、Image、Audio、Video...... 只要是網頁上可能會用到的檔案,我們基本上都會存在 static 當中,方便我們可以在不同路徑中,快速的存取這些檔案
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
可能包含敏感內容
這個文章提供了多年的地特三等作文題目,並提供每個題目的具體內容和提點。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
1.justify-content 用來控制主軸(水平)如何分配對齊 如果要改垂直對齊的話+上 flex-direction : column 2.align-item 他是控制子項目再交叉軸(垂直)的對齊方式 3.flex-shrink 收縮性! 當空間不足時預設會是1,等於是
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
這篇文章介紹了CSS Battle每週切版#107的解題方法。它深入講解了使用grid來處理圖案的方法,同時介紹了圖層堆疊、border-radius和z-index的使用。文章中還分享了使用position: relative;調整位置的技巧。本篇文章是前端工程師們進行基礎切版學習和練習的好材料。
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
介紹 大家第一次聽到,static 肯定很陌生。簡單來說,這個東西就是拿來存放一些我們經常會用到的檔案,比方說: CSS、JS、Image、Audio、Video...... 只要是網頁上可能會用到的檔案,我們基本上都會存在 static 當中,方便我們可以在不同路徑中,快速的存取這些檔案