CSS position: sticky 粘性定位
如果提到position定位,最容易想到是如下幾個定位方式:
(1).position:absolute絕對定位。
(2).position:relative相對定位。
(3).position:fixed固定定位。
是非常重要的知識點,想必每一個前端人員,都曾花費一定精力去掌握它們。
當前,新增一功能強大定位方式,可以輕鬆實現之前需要利用JavaScript且較為繁瑣的效果。
由此,此定位方式在可以預期的將來一定會得到廣泛應用。
那就是本文的主角position:sticky 粘性定位,功能恰如其名,後面通過程式碼演示。
語法結構:
[CSS] 純文字檢視 複製程式碼position:sticky
top、bottom、left和right屬性分別設定元素粘性定位的臨界值。
特別說明:此定位方式當前尚屬實現性質,可以預測以後會得到標準化。
瀏覽器相容性截圖如下:
在標準瀏覽器中支援度越來越高看起來是一種趨勢。
程式碼例項如下:
[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: 0px; } 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>
上述程式碼將class屬性值為"sticky"的元素設定為粘性定位。
當向下拖動滾動條的時候,div元素會向上移動,但是當達到視口包含塊頂端的時候,自動會固定住。
這是十分常見的效果,如果不使用此定位方式,利用JavaScript實現比較繁瑣。
使用top、bottom、left和right屬性可以設定元素固定的臨界位置。
粘性定位不會脫離文件流,它的表現有點像是相對定位於固定定位的組合體。
關於視口包含塊的概念,在CSS position:fixed 固定定位一文後半部分有所涉及。
程式碼例項如下:
[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>
上述程式碼設定class屬性值為"sticky"的div元素距離視口包含塊頂部50px的時候固定。
四個屬性不能採用預設值,必須至少顯式設定其中屬性之一,粘性定位才會生效。
且left與top的優先順序大於right與bottom,如通過同時設定的話。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:500px; height:500px; overflow:auto; margin:100px; } .container { background: #eee; width: 400px; height: 1000px; margin: 120px auto; } .sticky { position: sticky; height: 60px; line-height: 60px; margin-bottom: 30px; background: #ccc; top:0px; } div { font-size: 30px; text-align: center; color: #fff; } </style> </head> <body> <div id="box"> <div class="container"> <div class="sticky">螞蟻部落一</div> <div class="sticky">螞蟻部落二</div> <div class="sticky">螞蟻部落三</div> <div class="sticky">螞蟻部落四</div> </div> <div> </body> </html>
上述程式碼是基於box元素進行粘性定位的,而不是基於視口包含塊。
粘性定位的定位參考物件距離其最近的overflow屬性值為visible的具有滾動條的祖先元素,如果以body或者body父輩元素為參考,定位參考物件是視口包含塊。
同時還要注意一點,粘性定位元素的任何一個父輩元素的overflow屬性值必須是visible,否則粘性定位不生效。
最後總結如下:
(1).粘性定位必須設定top、bottom、left和right屬性之一,否則不會生效。
(2).粘性定位任何一個父元素overflow屬性值必須是visible,否則不會生效。
(3).粘性定位基於距離他最近的具有滾動條的父元素,否則基於視口包含塊。
相關文章
- CSS position:sticky 粘性定位CSS
- CSS position定位(fixed、sticky)CSS
- position:sticky 粘性定位的幾種巧妙應用
- 使用 position:sticky 實現粘性佈局
- 有趣的發現,position的sticky粘性佈局
- CSS position:sticky與position:fixed 區別CSS
- CSS的定位:positionCSS
- CSS之定位PositionCSS
- 解析position: sticky;
- CSS position:absolute 絕對定位CSS
- CSS position: absolute 絕對定位CSS
- CSS position:fixed 固定定位CSS
- CSS position: fixed 固定定位CSS
- CSS position:relative 相對定位CSS
- CSS position: relative 相對定位CSS
- 淺談CSS中的Position(定位)CSS
- CSS background position 背景定位的用法CSS
- position:sticky定位元素是否在同一父元素中區別
- Position定位
- web前端css定位position和起浮floatWeb前端CSS
- position: sticky是否脫離文件流
- 探究 position-sticky 失效問題
- css定位中position:absolute與float的區別CSS
- 【後知後覺系列】css position: sticky 屬性以及某些場景的使用CSS
- position:sticky 的 polyfill——stickyfill 原始碼淺析原始碼
- Position定位詳解
- CSS3 background-position定位背景圖片動畫效果CSSS3動畫
- 總結一下CSS中的定位 Position 屬性CSS
- css positionCSS
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- CSS之positionCSS
- 總結一下css中的盒子模型和position定位CSS模型
- CSS background-positionCSS
- css的position:absoluteCSS
- Tips-移動端滑動固頂效果(position: sticky)
- position:fixed 相對父元素定位
- [CSS 3] Sticky scrollingCSS
- CSS之Position詳解CSS