CSS position:sticky與position:fixed 區別
position:sticky粘性定位與position:fixed固定定位效果比較類似。
都可以在拖動滾動條的時候,將元素固定於指定位置,但是兩者的區別也是非常巨大的。
下面將通過程式碼例項詳細介紹一下它們兩者的區別,兩個定位方式基本用法參閱如下兩篇文章:
(1).粘性定位參閱CSS position:sticky 粘性定位一章節。
(2).固定定位參閱CSS position:fixed 固定定位一章節。
先總結一下兩種定位方式的特點,再進行對比總結和程式碼演示。
一.固定定位:
(1).元素可以被固定於頁面指定位置,始終固定於此位置。
(2).定位位置可以通過top、bottom、left與right屬性設定。
(3).如果屬性同時設定,那麼top的優先順序高於bottom,left的優先順序高於right。
(4).top、bottom、left與right無需顯式設定,fixed定位也會生效。
(5).元素的定位參考物件是當前視口包含塊,不要誤以為是距離其最近的定位元素。
(6).元素脫離文件流。
(7).當前所有主流瀏覽器都支援此定位方式(不再考慮IE6瀏覽器)
二.粘性定位:
(1).元素可以被固定於頁面指定位置,但並不一定始終固定於此位置。
(2).定位位置可以通過top、bottom、left與right屬性設定,但是此位置是一個臨界值,也就是說元素只有達到設定的這個臨界值才會固定,其他位置並不會固定。
(3).如果屬性同時設定,那麼top的優先順序高於bottom,left的優先順序高於right。
(4).必須至少顯式設定top、bottom、left與right其中某一個屬性值,sticky定位才會生效。
(5).元素的定位參考物件距離其最近的overflow屬性值為visible的具有滾動條的祖先元素,如果是以body或者body的父輩元素為參考,那麼定位參考物件是視口包含塊。
(6).元素不會脫離文件流。
(7).瀏覽器兼行當前有點差,不過以後肯定會越來越好。
關於視口包含塊在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"> div { font-size: 30px; text-align: center; color: #fff; } .container { background: #eee; width: 400px; height: 1000px; margin: 120px auto; } .sticky ,.fixed{ height: 60px; line-height: 60px; margin-bottom: 30px; top:50px; } .sticky{ position: sticky; background: green; } .fixed{ position: fixed; background:blue; } </style> </head> <body> <div class="container"> <div class="sticky">螞蟻部落</div> <div class="fixed">螞蟻部落</div> </div> </body> </html>
可以拖動滾動條測試效果,程式碼分析如下:
(1).fixed元素始終固定於top屬性指定的位置。
(2).sticky元素則是到達top屬性指定的位置才會固定。
(3).上述兩個程式碼的定位都是以當前視口包含塊為參考。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div { font-size: 30px; text-align: center; color: #fff; } #box{ width:500px; height:500px; overflow:auto; margin:100px; } .container { background: #eee; width: 400px; height: 1000px; margin: 120px auto; } .sticky{ height: 60px; line-height: 60px; position:sticky; background-color:green; margin-bottom: 30px; top:50px; } </style> </head> <body> <div id="box"> <div class="container"> <div class="sticky">螞蟻部落</div> </div> </div> </body> </html>
sticky元素的定位參考物件不但可以是視口包含塊,也可以是距離其最近的overflow屬性值visible的最近父元素。
但是fixed元素始終以視口包含塊為定位參考物件,不要認為是以距離其最近的定位元素或者視口包含塊為參考。
相關文章
- CSS position定位(fixed、sticky)CSS
- CSS position:sticky 粘性定位CSS
- CSS position: sticky 粘性定位CSS
- 解析position: sticky;
- 解決CSS position:fixed 相容問題CSS
- position:fixed顯示錯位
- CSS中position屬性( absolute | relative | static | fixed )詳解CSS
- css positionCSS
- position: sticky是否脫離文件流
- 探究 position-sticky 失效問題
- position:sticky定位元素是否在同一父元素中區別
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- position:fixed 相對父元素定位
- CSS之positionCSS
- position:sticky 的 polyfill——stickyfill 原始碼淺析原始碼
- CSS的定位:positionCSS
- CSS之定位PositionCSS
- CSS background-positionCSS
- css的position:absoluteCSS
- CSS列表中list-style-position inside 和outside 的區別?CSSIDE
- 有趣的發現,position的sticky粘性佈局
- position:sticky 粘性定位的幾種巧妙應用
- 前端~定位屬性position(relative、absolute、fixed)的分析前端
- 【後知後覺系列】css position: sticky 屬性以及某些場景的使用CSS
- CSS position: relative 相對定位CSS
- CSS position: absolute 絕對定位CSS
- CSS position:absolute 絕對定位CSS
- CSS position:relative 相對定位CSS
- css [background-position] 單位CSS
- 哪些方式使得position:fixed定位的基準元素改變?
- CSS:層疊樣式表—positionCSS
- 淺談CSS中的Position(定位)CSS
- position
- css 盒子模型和position總結CSS模型
- Position定位
- css(二):高度與文件流,line-box與box,寬度,position與CSS
- web前端css定位position和起浮floatWeb前端CSS
- CSS-背景位置-x|background-position-xCSS