前端學習3--position定位(relative+absolute+sticky)

繼上一篇,做下拉菜單的時候,涉及到了position,這篇就來學習下~

先看下position在下拉菜單中的應用:

一、關鍵代碼回顧:

/* 下拉菜單容器 */
.dropdown {position: relative; /* ? 關鍵父級 */
}/* 下拉內容(默認隱藏) */
.dropdown-content {position: absolute; /* ? 關鍵子級 */top: 100%; /* ? 定位到父元素底部 *//* 別的不展示了。。。 */
}

為什么呢?來分步驟分析下:?

步驟1:建立定位上下文

/* 下拉菜單容器 */
.dropdown {position: relative;    /* 創建定位基準 */display: inline-block; /* 保持容器寬度與內容一致 */
}
  • 為什么必須設置 relative?
    給內部的 absolute 元素提供一個定位的坐標系。如果不設置,下拉菜單會一直向上查找,直到?<html>?標簽。

步驟2:絕對定位子元素

/* 下拉內容(默認隱藏) */
.dropdown-content {position: absolute;top: 100%; /* 從父元素頂部向下偏移100%高度 */left: 0;   /* 與父元素左對齊 */
}
  • 關鍵數值解析

    • top: 100%:表示「從父元素頂部開始,向下移動父元素高度的100%」

    • 如果設置?bottom: 0?會貼到父元素頂部(try try)

步驟3:處理邊界情況

.dropdown-content {width: 100%; /* 與父元素同寬 */min-width: 160px; /* 防止內容過窄 */
}
  • 設計技巧:絕對定位元素默認寬度由內容決定,顯式設置?width:100%?可以讓下拉菜單和按鈕等寬

?區別對比:

屬性值特點在下拉菜單中的作用
relative元素仍占據文檔流位置,但可以相對自身原始位置偏移為?absolute?子元素提供定位基準
absolute元素脫離文檔流,相對于最近的非?static?祖先元素定位讓下拉內容懸浮在按鈕下方
static默認值,元素按正常文檔流排列-

注意:

  1. relative 定位元素經常被用來作為絕對定位元素的容器塊。
  2. absolute 定位使元素的位置與文檔流無關,因此不占據空間。
  3. absolute 定位的元素和其他元素重疊。

?學習sticky 定位

一、先明確下新需求:

  1. 增加多幾個下拉框的選項,然后做滾動條
  2. 第一個做“不吃”的選項,而且是固定的,下滑不會消失

二、HTML 結構修改

<div class="dropdown"><button class="dropdown-btn">今天吃什么?</button><div class="dropdown-content"><div class="sticky-item">不吃</div> <!-- 新增固定項 --><a href="#">火鍋</a><a href="#">炸雞</a><a href="#">麻辣燙</a><a href="#">燒烤</a><a href="#">披薩</a><a href="#">壽司</a>  <!-- 新增選項 --><a href="#">拉面</a><a href="#">咖喱</a><a href="#">沙拉</a><a href="#">牛排</a></div>
</div>

三、CSS 關鍵修改

1. 實現可滾動下拉框
.dropdown-content {max-height: 200px; /* 限制最大高度 */overflow-y: auto;  /* 垂直滾動 */scrollbar-width: thin; /* 更細的滾動條 */
}
2. 固定首項「不吃」
.sticky-item {position: sticky;top: 0; /* 距離頂部的距離 */z-index: 2; /* 確保粘性元素在其他內容之上 */font-weight: bold;border-bottom: 1px solid #ddd; /* 添加底部邊框,視覺分隔 */background-color: #f9f9f9;
}
注意:記得把這塊樣式添加上去

三、關鍵知識點解析

1.?position: sticky?的妙用
  • 特性:元素在視口內時表現為?fixed,離開視口時表現為?relative

  • 必須配合?top/bottom?等方位屬性使用

  • 在下拉菜單中的應用:讓“不吃”選項始終可見

2. 層級關系(z-index)
  • sticky-item?的?z-index: 2?確保它始終在滾動內容之上

  • 下拉菜單整體的?z-index: 1?確保懸浮在其他元素上方

3. 如果sticky 無效可能原因
  1. 父元素有?overflow: hidden

  2. 未設置?top/bottom?值

  3. 祖先元素高度不足

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

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

相關文章

APP Inventor使用指南

APP Inventor使用指南一、組件介紹二、邏輯設計設計方法&#xff1a;設計實例&#xff08;參考嘉立創教程&#xff09;點擊跳轉 &#xff1a; app inventor&#xff08;點不開的話需要&#x1fa84;&#x1fa84;&#x1fa84;&#x1fa84;&#x1fa84;&#xff09; 一、組…

SpringAI實現保存聊天記錄到redis中

redis相關準備添加依賴我利用redission來實現<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.37.0</version> </dependency>添加配置文件spring:redis:database: 5host: 127.0.0.1…

Unity中使用EzySlice實現模型切割與UV控制完全指南

引言 在Unity中實現3D模型的動態切割是一個常見的需求&#xff0c;無論是用于游戲特效、建筑可視化還是醫療模擬。本文將全面介紹如何使用EzySlice插件實現高效的模型切割&#xff0c;并深入探討如何通過Shader Graph精確控制切割面的UV映射。 第一部分&#xff1a;EzySlice基…

【c++學習記錄】狀態模式,實現一個登陸功能

狀態模式建議為對象的所有可能狀態新建一個類&#xff0c; 然后將所有狀態的對應行為抽取到這些類中。 原始對象被稱為上下文 &#xff08;context&#xff09;&#xff0c; 它并不會自行實現所有行為&#xff0c; 而是會保存一個指向表示當前狀態的狀態對象的引用&#xff0c;…

Docker 搭建 Harbor 私有倉庫

1 部署 Harbor 注意&#xff1a;docker、docker-compose、Harbor的版本是否適配&#xff0c;這里使用的版本如下表&#xff1a; Docker版本Docker Compose版本Harbor版本v19.09.8v1.29.2v2.8.2 1.1 安裝 docker-compose # 下載 docker-compose 1.29.2 版本 curl -L "h…

C++類模板繼承部分知識及測試代碼

目錄 0.前言 1.類模板基本使用 2.類模板繼承 2.1類模板繼承過程中的模板參數 情況1&#xff1a;父類非模板&#xff0c;子類為模板 情況2&#xff1a;父類模板&#xff0c;子類為非模板 情況3&#xff1a;父類模板&#xff0c;子類為模板 3.STL中的模板類分析 3.1STL中…

Laravel + Python 圖片水印系統:實現與調試指南

前言 本系統通過 Laravel 作為前端框架接收用戶上傳的圖片&#xff0c;調用 Python 腳本處理水印添加&#xff0c;最終返回處理后的圖片。這種架構充分利用了 Laravel 的便捷性和 Python 圖像處理庫的強大功能。 一、Python 水印處理腳本 from PIL import Image, ImageEnhance …

【速通RAG實戰:企業應用】25、從數智化場景看RAG:是臨時方案,還是終局架構?

引言&#xff1a;RAG為何成為數智化場景的"必爭之地"&#xff1f; 當ChatGPT在2023年掀起生成式AI浪潮時&#xff0c;一個矛盾逐漸凸顯&#xff1a;大語言模型&#xff08;LLM&#xff09;能生成流暢文本&#xff0c;卻常陷入"幻覺"&#xff08;虛構事實&a…

[Python] -實用技巧篇1-用一行Python代碼搞定日常任務

在日常開發或數據處理過程中,我們常常為了一些簡單的小任務寫出數行代碼。但實際上,Python 提供了大量強大且簡潔的語法糖和標準庫工具,讓你用“一行代碼”輕松搞定復雜操作。 本文將通過多個典型場景展示如何用“一行 Python 代碼”高效完成常見任務。 一、文件操作:快速…

單細胞入門(1)——介紹

一、單細胞轉錄組測序流程介紹 單細胞測序能夠探索復雜組織中單個細胞的不同生物學特性&#xff0c;幫助我們認識細胞與細胞之間的差異。這些檢測方法有助于研究細胞譜系、細胞功能、細胞分化、細胞增殖和細胞應答&#xff0c;提升我們對復雜生物系統的理解&#xff0c;包括腫…

數據結構與算法之美:跳表

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 歡迎點贊&#xff0c;關注&am…

從0設計一個短鏈接服務:如何實現盡可能短、可變長的短網址系統?

從 0 設計一個短鏈接服務&#xff1a;如何實現盡可能短、可變長的短網址系統&#xff1f; 在日常生活中&#xff0c;我們經常在短信、微博、廣告營銷中看到“短鏈接”&#xff0c;如&#xff1a; https://t.cn/EXaQ4xY https://bit.ly/3Yp9zJk相比冗長復雜的原始 URL&#xff0…

Microsoft Word 中 .doc 和 .docx 的區別

Microsoft Word 中 .doc 和 .docx 的區別 解釋 Microsoft Word 中 .doc 和 .docx 文件格式的區別。這些格式都是 Word 處理文檔的標準&#xff0c;但它們在結構、兼容性和功能上存在顯著差異。下面我將詳細說明。 1. 基本定義 .doc&#xff1a;這是 Microsoft Word 的舊格式&am…

Springboot aop面向切面編程

aop:面向切面編程&#xff0c;理解在一個流程中插入一個切面&#xff0c;這樣切面方法會在指定位置執行能無影響的在某些方法前或者后插入一些動作springboot使用1.引入依賴<dependency><groupId>org.springframework.boot</groupId><artifactId>sprin…

手機識別數據集,2628張原始圖片,支持yolo,coco json,pasical voc xml等格式的標注

本文提供手機識別數據集&#xff0c;2628張原始圖片&#xff0c;支持yolo&#xff0c;coco json,pasical voc xml等格式的標注的數據集下載&#xff0c;下載地址在文末手機識別數據集簡介手機識別數據集通常用于訓練和評估機器學習模型&#xff0c;以識別不同手機品牌、型號或功…

ollama - sqlcoder模型:面向提示詞編程(根據用戶信息生成sql語句并執行返回結果)

https://ollama.ac.cn/library/sqlcoderhttps://blog.csdn.net/hzether/article/details/143816042import ollama import sqlite3 import json from contextlib import closingdef generate_and_execute_sql(question: str, db_path: str) -> dict:# 1. 生成 SQL 查詢語句pr…

C語言,結構體指針案例

案例一&#xff1a; #include <stdio.h> #include <stdbool.h> #include <string.h> // 添加string.h頭文件用于strcpy //結構體指針//方式 1 : 先定義結構體 struct Dog {char *name;int age;char weight; };//方式 1 : char *get_dog_info(struct Dog do…

Vue 3 中父子組件雙向綁定的 4 種方式

&#x1f501; Vue 3 中父子組件雙向綁定的 4 種方式 整理不易&#xff0c;點贊 收藏 關注&#xff0c;助你組件通信不再混亂&#xff01;? 場景說明 父組件希望將某個值傳遞給子組件&#xff0c;同時希望子組件能夠修改這個值&#xff08;實現“綁定 反向更新”&#xff0…

阻有形,容無聲——STA 簽核之RC Corner

RC corner&#xff0c;RC指的是gate跟network的寄生參數&#xff0c;寄生參數抽取工具&#xff08;比如Starrc&#xff09;根據電路的物理信息&#xff0c;抽取出電路的電阻電容值&#xff0c;再以寄生參數文件&#xff08;Spef&#xff09;輸入給STA工具&#xff08;PT&#x…

多代理系統(multi-agent)框架深度解析:架構、特性與未來

在人工智能技術迭代的浪潮中&#xff0c;多代理系統&#xff08;Multi-Agent System&#xff09;正從實驗室走向產業應用的核心舞臺。這一技術范式的崛起源于三大驅動力&#xff1a;大模型能力的指數級提升、復雜任務分解的需求爆發&#xff0c;以及傳統單體智能架構的局限性日…