position: sticky(粘性定位)
表现很奇特,具体有以下几点:(表现仅在谷歌77下测试)
1、父元素的overflow属性值只能为visible(默认值),否则表现为relative
2、作为子元素,它无法跑到父元素之外,这是第一要素;
3、在满足以上条件的情况下:相对于视口的距离尽量大于所设置的各个方向的值(各个方向值之间不冲突);而一旦触发这个规则,元素表现就像fixed元素一样固定住了,但仍占据父元素原本的空间,对兄弟元素的布局无影响;可以认为只影响了视觉效果。
4、一旦sticky生效,则作为子元素position表现为static,作为父元素position表现为relative
5、根据上一点可知,sticky无BFC特性,该元素会和子元素有margin合并现象
6、父元素可以设置height属性固定值
7、使用时
<div class="before"></div>
<div class="relative">
<span>123456</span>
<div class="sticky">
<div></div>
<div></div>
</div>
<span>654321</span>
</div>
<div class="after"></div>
.relative {
position: relative;
height: 300px;
background-color: #409eff;
/* overflow:hidden; 试验第一条*/
}
.sticky {
position: sticky; /* 可能需要浏览器前缀 */
height: 100px;
background-color: #000;
top: 20px;
bottom:20px;
}
.sticky > div {
/* 测试BFC */
margin: 10px 0;
height: 10px;
background-color: red;
}
.before, .after {
height: 300px;
background-color: #ececec;
}