教程上都在说,sticky是relative和fixed的混合体,因为sticky的元素在滚动到某个阈值点之前,表现得“像relative定位一样”----这里我很不理解,以我的观察来看,元素在滚动到阈值点之前,就是普通的static定位啊,这时你设置的top left这些也根本不生效!为什么说是relative定位呢?
谢谢。
教程上都在说,sticky是relative和fixed的混合体,因为sticky的元素在滚动到某个阈值点之前,表现得“像relative定位一样”----这里我很不理解,以我的观察来看,元素在滚动到阈值点之前,就是普通的static定位啊,这时你设置的top left这些也根本不生效!为什么说是relative定位呢?
谢谢。
生效啊?为啥不生效?
<body>
<div class="wrap">
<div class="sticky"></div>
<p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
<p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>
</div>
</body>
.wrap{
width: 500px;
height: 500px;
border: 2px solid red;
overflow-y: scroll;
}
.sticky{
width: 100px;
height: 100px;
background: blue;
position: sticky;
top: 100px;
}
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
2 回答4.1k 阅读✓ 已解决
5 回答2.2k 阅读
3 回答2.7k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
在学习
sticky
时跟题主有一样的疑惑,在未达到阈值点时,top
属性并不生效,所以表现得完全就是static
的状态。(楼上答主给出的示例之所以生效是因为将元素放置在最顶部,这个时候其实已经达到了阈值点)经过我的查询有一点收获,特意注册账号分享下我的理解。
首先,在 W3C 中关于
sticky
的描述原文如下:其实,上面这句话已经将
sticky
说的很清楚了,至于将sticky
看做是relative
和fixed
的结合体最早应该来源于 MDN 中的描述原文如下:我们不能说这句话错误,因为这里说是“基本上”和“像”。我们可以按照这样的理解,但是不能要求
sticky
真得具有relative
和fixed
的性质。(毕竟我们已经认可了达到阈值点之后,元素是相对于滚动视口定位而不是真的和fixed
一样相对视口定位,所以没必要要求达到阈值点之前,元素必须真的和relative
一样能够设置top
属性)