position:sticky定位元素是否在同一父元素中區別
position:sticky粘性定位的基本知識參閱CSS position:sticky 粘性定位一章節。
其實本文的標題有點傻,既然定位元素不在同一父元素下,那麼HTML結構也就不同,很自然就會產生這樣那樣的不同,歸根結底都是由粘性定位的特點所決定的,透過現象瞭解本質是學習的關鍵所在,並不是要單純記憶在和種場景下會出現何種現象,而是要真切理解其中的原理,最終達到靈活運用的目的。寫本文主要有兩個目的:
(1).提醒讀者選擇合理的佈局結構,才能夠達成不同的佈局效果。
(2).在文章展開過程中,鞏固一下粘性定位的一些特點。
下面進入正題,首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .container { background: #eee; width: 400px; height: 1000px; margin: 120px auto; } .sticky { position: sticky; height: 60px; line-height: 60px; margin-bottom: 30px; background: #ccc; top: 50px; } div { font-size: 30px; text-align: center; color: #fff; } </style> </head> <body> <div class="container"> <div class="sticky">螞蟻部落一</div> <div class="sticky">螞蟻部落二</div> <div class="sticky">螞蟻部落三</div> <div class="sticky">螞蟻部落四</div> </div> </body> </html>
大家可以拖動滾動條檢視定位效果,程式碼分析如下:
(1).所有粘性定位div元素都位於同一個父元素之下。
(2).當拖動滾動條的時候,到達top設定的臨界值,元素就會固定下來。
(3).可以觀察到,粘性定位的div元素都會重疊在一起,層疊順序是後來者居上。
如果將這些粘性定位元素放置於不同的父元素下,表現會有所不同,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .container { background: #eee; width: 400px; height: 1000px; margin: 120px auto; } .sticky { position: sticky; height: 60px; line-height: 60px; background: #ccc; top: 50px; } section{ max-width: 600px; margin-bottom: 30px; overflow:visible; } p{color:green} div { font-size: 30px; text-align: center; color: #fff; } </style> </head> <body> <div class="container"> <section> <div class="sticky">螞蟻部落一</div> <p>CSS教程</p> </section> <section> <div class="sticky">螞蟻部落二</div> <p>CSS教程</p> </section> <section> <div class="sticky">螞蟻部落三</div> <p>CSS教程</p> </section> <section> <div class="sticky">螞蟻部落四</div> <p>CSS教程</p> </section> </div> </body> </html>
大家可以拖動滾動條檢視定位效果,程式碼分析如下:
(1).粘性定位元素分別位於各自的<section>父元素下。
(2).現在拖動滾動條,認真觀察效果會發現如下幾個特點。
(3).首先,top、bottom、left和right屬性定位參考是以距離它最近的具有滾動條父元素為定位參考物件,如果是頁面出現滾動條,則以視口包含塊為定位參考物件,所以當拖動滾動條時,距離視口頂部50px的時候,粘性定位元素會固定。
(4).但是粘性定位元素的固定範圍不會超出它的直接父元素,也就是不會超出它所在的紅框。
(5).正是由於上面的原因,粘性定位的div元素之間不會覆蓋在一起,因為受限於它們的直接父元素。
相關文章
- CSS position:sticky與position:fixed 區別CSS
- position:fixed 相對父元素定位
- CSS position:sticky 粘性定位CSS
- CSS position: sticky 粘性定位CSS
- CSS position定位(fixed、sticky)CSS
- position: sticky是否脫離文件流
- 判斷元素是否在視口和元素相交
- position:absolute相對哪個元素定位,那個元素要滿足什麼條件
- 哪些方式使得position:fixed定位的基準元素改變?
- 元素定位
- position:sticky 粘性定位的幾種巧妙應用
- Array · 判斷某元素是否在陣列中陣列
- 解析position: sticky;
- 如何判斷一個元素是否在可視區域中?
- appium元素定位APP
- 塊級元素和行內元素的區別
- 有關float、position:absolute及a元素
- HTML的行內元素與塊級元素的區別?HTML
- 塊元素和行內元素的區別與轉換
- python列表中是否存在某個元素Python
- Selenium實現元素定位
- selenium常用元素定位方式
- Selenium Web元素定位方法Web
- Intersection observer檢測元素是否在視窗內Server
- CSS偽元素詳解以及偽元素與偽類的區別CSS
- 檢查vector中是否包含給定元素
- 偽類與偽元素的區別
- ios XCUIElement 元素定位問題iOSUI
- Python Selenium如何定位元素Python
- Cypress 基礎 - 元素的定位
- Selenium系列4-元素定位
- 如何選擇元素定位方式
- html元素滾動定位方法HTML
- 在擁有捲軸元素內滾動時,判斷其子元素是否出現(達到可視區域)公式公式
- vue透過自定義指令判斷當前元素是否在可視區域Vue
- 獲取當前元素在兄弟元素節點中的索引索引
- 探究 position-sticky 失效問題
- 如何判斷元素是否進入可視區域viewport?View