粘性定位区别于其他的定位方式,目前浏览器兼容性良好,使用起来很方便,但是不是很好理解使用,列举几个实现效果。
基础概念使用
MDN中简单的介绍了它的概念。
元素根据正常文档流进行定位,然后相对它的最近滚动祖先(nearest scrolling ancestor)和 containing block(最近块级祖先 nearest block-level ancestor),包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。 该值总是创建一个新的层叠上下文(stacking context)。注意,一个 sticky 元素会“固定”在离它最近的一个拥有“滚动机制”的祖先上(当该祖先的 overflow 是 hidden、scroll、auto 或 overlay 时),即便这个祖先不是最近的真实可滚动祖先。这有效地抑制了任何“sticky”行为
简单来说,就是以下几点:
- 如果父元素position不是static,就会根据父元素定位,如果不是,往上查找滚动的非标准元素(position不是static)
- 这个元素本身是标准流的元素,类似static
- 当设置了top/bottom/left/right,会在到达指定偏移量后浮动,类似fixed
相对于底部浮动
设置相对于顶部只需要设置top,在可视区域内,向下滚动,父元素相对可视区域顶部消失时,粘性定位元素就会生效。
如果想要针对实现,父元素相对可视区域底部出现,固定显示需要一点技巧。
演示
代码
1 | <style> |
固定底图文字从底部向上滑动
全屏背景图,向上滑动时,文字从底部移动至中间。
演示
代码
1 | <style> |