前言
发现很多博客的侧边栏可以跟随滚动条移动到底部又可以继续翻看侧边栏,F12看了下代码,仅仅是用了一个sticky定位,下边我简单说一下sticky定位
内容简介:
讲 sticky 定位之前,我先说一下position 的其他定位
absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的
位置通过"left", "top", "right" 以及 "bottom" 属性进行规定。
fixed 生成固定定位的元素,相对于浏览器窗口进行定位(老IE不支持),元素的位置通
过"left", "top", "right" 以及 "bottom" 属性进行规定。
relative 生成相对定位的元素,相对于其正常位置进行定位,不脱离文档流。
static 默认值,没有定位,元素出现在正常的文档流中(忽略 top, bottom, left, right 或者z-index 声明)。inherit规定应该从父元素继承 position 属性的值。
sticky的使用
粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位,设置了以上样式的元素,在 viewport
视口滚动到元素 top
距离小于 10px
之前,元素为相对定位。之后,元素将固定在与顶部距离 10px
的位置,直到 viewport
视口回滚到阈值以下。
#sticky-nav { position: sticky; top: 100px; }
设置 position:sticky
同时给一个 (top,bottom,right,left)
之一即可
粘性定位为什么不起作用
使用条件:
- 父元素不能overflow:hidden或者overflow:auto属性。
- 必须指定top、bottom、left、right4个值之一,否则只会处于相对定位
- 父元素的高度不能低于sticky元素的高度
- sticky元素仅在其父元素内生效
此处评论已关闭