CSS 定位的核心屬性:position

🧩 一、CSS 定位的核心屬性:position

position?屬性用于定義一個元素在頁面中的定位方式,它決定了:

  • 元素在頁面中的定位規則
  • 是否脫離文檔流
  • 元素的位置是相對于誰(父元素、瀏覽器窗口、自身等)

? 可選值如下:

名稱是否脫離文檔流定位參考說明
static?靜態定位?(默認值)? 不脫離元素按照正常的文檔流排列,?top、right、bottom、left、z-index 無效?
relative?相對定位?? 不脫離?元素自身原本的位置?相對于元素原本應該放置的位置進行偏移,但仍占據原來的空間
absolute?絕對定位?? 脫離?最近的已定位(非 static)祖先元素,如果沒有則相對于?<html>(視口)脫離文檔流,相對于定位了的父級定位,常用于彈窗、下拉菜單等
fixed?固定定位?? 脫離?瀏覽器視口(viewport)??相對于瀏覽器窗口固定,?滾動時位置不變,常用于導航欄、回到頂部按鈕
sticky?粘性定位??? 特殊(介于相對與固定之間)?視口 + 滾動容器?在屏幕范圍內表現為?relative,超出后表現為?fixed,常用于吸頂導航

🧠 二、各定位屬性詳解與示例


1???position: static?—— ?靜態定位(默認)??

? 說明:
  • ?默認值,即如果你不寫?position,元素就是?static
  • 元素按照 ?正常的文檔流? 排列(從上到下、從左到右)。
  • ?**toprightbottomleft?和?z-index?屬性無效!?**?
📌 示例:?
div.static-box {position: static; /* 默認值,可省略 */background: lightblue;
}
<div class="static-box">我是靜態定位(默認)</div>

🎯 你幾乎不需要主動設置?position: static,因為這就是默認行為。


2???position: relative?—— ?相對定位?

? 說明:
  • 元素依然在正常的文檔流中,?占用原本的空間
  • 但你可以通過?toprightbottomleft?將它相對于它自身本來的位置進行偏移
  • 常用于作為 ?**absolute?定位的參考父級**?(即給子元素提供定位上下文)。
📌 示例:
div.relative-box {position: relative;top: 20px;left: 30px;background: lightcoral;
}
<div class="relative-box">我相對自己原本位置,向下 20px,向右 30px</div>

🎯 雖然它移動了位置,但它原來占的空間還在,不影響其他元素的布局。


3???position: absolute?—— ?絕對定位?

? 說明:
  • ?脫離文檔流,?不占據原來的空間,其他元素會無視它的存在。
  • 它的位置是相對于最近的一個定位祖先(即?position?不是?static?的祖先)?進行定位的。
  • 如果沒有定位的祖先,則相對于?<html>(即整個瀏覽器窗口)定位。
📌 常見用途:
  • 彈出框、下拉菜單、提示框、自定義 tooltip
  • 需要精準控制位置的 UI 元素
📌 示例:
<div class="parent"><div class="absolute-box">我是絕對定位</div>
</div>
.parent {position: relative; /* 作為 absolute 定位的參考 */height: 200px;background: #eee;
}.absolute-box {position: absolute;top: 50px;left: 50px;background: lightgreen;
}

??.absolute-box?是相對于?.parent(它最近的 ?非 static 定位的父級)進行定位的。

🔒 ?注意:??

如果父級都沒有設置?position: relative / absolute / fixed,那么絕對定位的元素會相對于?<html>(整個頁面)定位。


4???position: fixed?—— ?固定定位?

? 說明:
  • ?脫離文檔流?
  • ?相對于瀏覽器視口(viewport)進行定位,?滾動頁面時位置固定不變?
  • 常用于:導航欄、返回頂部按鈕、懸浮客服等
📌 示例:
.fixed-box {position: fixed;bottom: 20px;right: 20px;background: gold;padding: 10px;
}
<div class="fixed-box">我永遠固定在右下角</div>

? 無論你如何滾動頁面,這個 DIV 始終停留在瀏覽器窗口的 ?右下角

🔧 常見應用場景:

  • 回到頂部按鈕
  • 懸浮購物車
  • 側邊欄導航
  • 吸底客服

5???position: sticky?—— ?粘性定位?

? 說明:
  • ?特殊定位?:它**在屏幕內時表現為?relative,超出屏幕(滾動到某位置后)時表現為?fixed**?
  • 常用于:?吸頂導航、表格頭部固定?
  • 它需要至少一個方向上設置?topbottomleft?或?right,否則不生效!
📌 示例:吸頂效果
.sticky-header {position: sticky;top: 0; /* 當滾動到距離視口頂部為 0 時固定 */background: lightblue;z-index: 100;
}
<div class="sticky-header">我是粘性定位(滾動到頂部時會吸住)</div>
<!-- 很多內容... -->

? 當頁面向下滾動,這個元素會在到達視口頂部時“粘”在頂部不動,就像導航欄一樣。
它在沒到達那個位置之前,仍然正常地在文檔流里。

🔒 ?注意:??

  • 必須指定?topbottomleft?或?right?中的一個,否則不生效!
  • 父容器不能有?overflow: hidden,否則可能失效

🧩 三、定位相關的重要屬性

在使用?position?定位時,通常還會配合以下屬性來精確定位元素:

屬性說明示例
top距離上邊的距離top: 10px;
right距離右邊的距離right: 20px;
bottom距離下邊的距離bottom: 30px;
left距離左邊的距離left: 40px;
z-index控制元素的堆疊順序(層級)z-index: 10;,數值越大越靠前

?? 注意:z-index??只在定位元素(非 static)上才生效!??


🧠 四、定位方式對比總結表

定位類型是否脫離文檔流定位參考是否可用 top/left 等典型用途
靜態定位static? 不脫離? 無效默認布局,正常文檔流
相對定位relative? 不脫離元素自身原位置? 可用微調元素位置,作為 absolute 的參考父級
絕對定位absolute? 脫離最近的定位祖先(或 html)? 可用彈窗、下拉菜單、tooltip
固定定位fixed? 脫離瀏覽器視口(viewport)? 可用回到頂部、導航欄、懸浮按鈕
粘性定位sticky?? 特殊視口 + 滾動容器? 可用(需 top 等)吸頂導航、表格固定頭部

? 五、總結一句話

?CSS 的?position?屬性用于控制元素的定位方式,包括?static(默認)、relative(相對)、absolute(絕對)、fixed(固定)、sticky(粘性)。不同的定位方式決定了元素是否脫離文檔流、相對于誰定位,以及如何精準控制其在頁面中的位置,是實現復雜布局和交互效果的核心機制。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94266.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構之深入探索快速排序

基準值的選定 我們之前已經用四種不同的方式實現了快速排序&#xff0c;如果還沒有學習過的伙伴們可以看一下這篇文章哦&#xff1a;數據結構之排序大全&#xff08;3&#xff09;-CSDN博客 那我們既然已經學習了這么多種方法&#xff0c;為什么還要繼續探索快速排序呢&#…

《遞歸與迭代:從斐波那契到漢諾塔的算法精髓》

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題、洛谷刷題、C/C基礎知識知識強化補充、C/C干貨分享&學習過程記錄 &#x1f349;學習方向&#xff1a;C/C方向學習者…

《LINUX系統編程》筆記p3

可重用函數不使用全局部變量&#xff0c;可以重復使用的函數.stat 命令作用&#xff1a;顯示一個文件或文件夾的“元信息”。文件基本信息文件&#xff08;File&#xff09;&#xff1a;顯示所查詢對象的名稱。大小&#xff08;Size&#xff09;&#xff1a;文件的大小&#xf…

大模型0基礎開發入門與實踐:第3章 機器的“統計學”:機器學習基礎概念掃盲

第3章 機器的“統計學”&#xff1a;機器學習基礎概念掃盲 1. 引言 想象一下&#xff0c;你是一位古代的農夫&#xff0c;畢生的經驗告訴你&#xff1a;烏云密布、燕子低飛&#xff0c;那么不久便會下雨。你并沒有學習過氣象學&#xff0c;也不懂大氣壓和水汽凝結的原理。你的“…

Java調用Ollama(curl方式)

1. 安裝Ollama Search 2. 調用 相關依賴 <dependencies><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.14</version></dependency><dependency>&…

nodejs koa框架使用

1: KOA 是express 打造的下一代web 開發框架提供更小更強的的核心功能&#xff0c;通過Promise 、async/await 進行異步編程&#xff0c;koa 可以不使用回調&#xff0c;解決了回調地獄的問題 blueBird 是nodejs 最出名的Primise 實現&#xff0c;除了實現標準的promise 之外&a…

2025年圖像處理與光學國際會議(ICIPO 2025)

2025年圖像處理與光學國際會議&#xff08;ICIPO 2025&#xff09; 2025 International Conference on Image Processing and Optics一、大會信息會議簡稱&#xff1a;ICIPO 2025 大會地點&#xff1a;中國北京 審稿通知&#xff1a;投稿后2-3日內通知 投稿郵箱&#xff1a;iac…

Kubernetes 構建高可用、高性能 Redis 集群

k8s下搭建Redis高可用1. 部署redis服務創建ConfigMap創建 Redis創建 k8s 集群外部2. 創建 Redis 集群自動創建 redis 集群手動創建 redis 集群驗證集群狀態3. 集群功能測試壓力測試故障切換測試4. 安裝管理客戶端編輯資源清單部署 RedisInsight控制臺初始化控制臺概覽實戰環境使…

文件IO的基礎操作

Java針對文件進行的操作:文件系統操作,File類(file類指定的路徑,可以是一個不存在的文件)文件內容操作 : 流對象分為兩類(1)字節流 以字節為基本的讀寫單位的 二進制文件 InputStream OutputStream(2)字符流 以字符為基本的讀寫單位的 …

【模版匹配】基于深度學習

基于深度學習的模版匹配 概述 本報告整理了2024-2025年最新的、可直接使用的模板匹配相關論文、方法和開源代碼實現。所有方法都提供了完整的代碼實現和預訓練模型&#xff0c;可以直接應用到實際項目中。 一、輕量級現代模板匹配框架 1.1 UMatcher - 4M參數的緊湊型模板匹…

CMake進階:Ninja環境搭建與加速項目構建

目錄 1.引入Ninja的原因 2.Ninja 環境搭建&#xff08;跨平臺&#xff09; 2.1.Linux系統安裝 2.2.macOS 系統 2.3.Windows 系統 2.4.源碼編譯安裝&#xff08;通用方案&#xff09; 3.Ninja 與構建系統配合&#xff1a;以 CMake 為例 4.加速構建的關鍵技巧 5.Ninja 與…

開發避坑指南(35):mybaits if標簽test條件判斷等號=解析異常解決方案

異常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression orderInfo.idList evaluated to a null value.報錯語句 <if test"orderInfo.queryFlag ! null and orderInfo.queryFlag sett…

GitCode 疑難問題診療:全面指南與解決方案

引言 在軟件開發的動態領域中&#xff0c;GitCode 作為一款強大的分布式版本控制系統&#xff0c;已然成為團隊協作與項目管理的基石。它賦予開發者高效管理代碼版本、輕松實現并行開發以及順暢協同合作的能力。然而&#xff0c;如同任何復雜的技術工具&#xff0c;在 GitCode…

使用 JS 渲染頁面并導出為PDF 常見問題與修復

本文直擊兩個最常見的導出痛點&#xff0c;并給出可直接落地的診斷 修復方案&#xff08;適用于 html2canvas jsPDF ECharts/自繪 canvas 場景&#xff09;。 問題清單 問題 A&#xff1a;導出后圖表模糊&#xff0c;線條與文字不清晰&#xff08;低分辨率&#xff09;。問題…

【Java后端】【可直接落地的 Redis 分布式鎖實現】

可直接落地的 Redis 分布式鎖實現&#xff1a;包含最小可用版、生產可用版&#xff08;帶 Lua 原子解鎖、續期“看門狗”、自旋等待、可重入&#xff09;、以及基于注解AOP 的無侵入用法&#xff0c;最后還給出 Redisson 方案對比與踩坑清單。一、設計目標與約束 獲取鎖&#x…

數據結構 -- 鏈表--雙向鏈表的特點、操作函數

雙向鏈表的操作函數DouLink.c#include "DouLink.h" #include <stdio.h> #include <stdlib.h> #include <string.h>/*** brief 創建一個空的雙向鏈表* * 動態分配雙向鏈表管理結構的內存&#xff0c;并初始化頭指針和節點計數* * return 成功返回指…

Wireshark獲取數據傳輸的碼元速率

一、Wireshark的物理層參數 Wireshark主界面可以看到數據發送時刻和長度&#xff1a; 這個時刻是Wireshark完整獲取數據包的時刻&#xff0c;實際上就是結束時刻。 需要知道的是&#xff1a; Wireshark工作在數據鏈路層及以上&#xff0c;它能解碼 以太網幀 / IP 包 / TCP…

11.1.3 完善注冊登錄,實現文件上傳和展示

1、完善注冊/登錄 1. 涉及的數據庫表單&#xff1a;user_info 2. 引用MySQL線程池&#xff0c;Redis線程池 3. 完善注冊功能 4. 完善登錄功能 2.1 涉及的數據庫表單&#xff1a;user_info 重新創建數據庫 #創建數據庫 DROP DATABASE IF EXISTS 0voice_tuchuang;CREATE D…

【Linux文件系統】目錄結構

有沒有剛進入Linux世界時&#xff0c;對著黑乎乎的終端&#xff0c;輸入一個 ls / 后&#xff0c;看著蹦出來的一堆名字 like bin, etc, usr&#xff0c;感覺一頭霧水&#xff0c;像是在看天書&#xff1f; 別擔心&#xff0c;你不是一個人。Linux的文件系統就像一個超級有條理…

螺旋槽曲面方程的數學建模與偏導數求解

螺旋槽曲面的數學描述 在鉆頭設計和機械加工領域,螺旋槽的幾何建模至關重要。螺旋槽通常由徑向截形繞軸做螺旋運動形成,其數學模型可通過參數方程和隱函數方程兩種方式描述。 設螺旋槽的徑向截形方程為: y=f(z)y = f(z)y=f(z) x=xcx = x_cx=xc? 其中 xcx_cxc? 為常數,…