position 是 CSS中的一个常用属性,常见的取值有:relative,absolute,static,fixed,不过我还有一个取值想必很多同学都没听过,那就是sticky,这个定位是干啥用的呢?
我们经常会遇到的一个场景就是,网页左侧有一个重要区域,正常情况下是跟随网页滚动条滚动的,当该元素到达浏览器顶部时,元素的定位就变成了fixed不动了。
对于这种需求的解决方案通常借助JS和CSS,通过检测滚动事件来修改元素的定位属性,或者使用第三方插件。
而sticky 恰恰是解决这种场景的纯CSS方案,sticky 的中文意思是粘性,也就是粘在某个地方。
将下面的代码保存在一个HTML文件 在浏览器中打开,体验一下sticky的效果
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.out{
margin-top:100px;
position:relative;
height:100%;
background-color:pink;
}
.inner{
width:100px;
height:300px;
background-color:red;
position:sticky;
top:0;
left:100px;
}
body{
height:10000px;
}
</style>
</head>
<body>
<div class="out">
<div class="inner"></div>
</div>
</body>
</html>
需要注意的一点是,要实现粘性定位,必须要指定top,right,bottom,left,四个属性之一,否则是没有效果的。
目前浏览器对于sticky的支持不太乐观,推荐加上相应的polyfill