因为我是 CSS 新手,所以文档很难理解。position:sticky
那么任何人都可以解释和之间的实际区别position:fixed
吗?我也会欣赏一个例子。
我已经浏览了https://developer.mozilla.org/en-US/docs/Web/CSS/position和其他一些文章,但我仍然不明白。
因为我是 CSS 新手,所以文档很难理解。position:sticky
那么任何人都可以解释和之间的实际区别position:fixed
吗?我也会欣赏一个例子。
我已经浏览了https://developer.mozilla.org/en-US/docs/Web/CSS/position和其他一些文章,但我仍然不明白。
position: fixed
总是将元素固定在其滚动容器或视口中的某个位置。无论您如何滚动其容器,它都将保持在完全相同的位置,并且不会影响容器内其他元素的流动。
在不涉及具体细节的情况下,position: sticky
基本上就像position: relative
一个元素被滚动到一个特定的偏移量之外,在这种情况下它变成position: fixed
,导致元素“粘”到它的位置而不是被滚动到视图之外。当它滚动回到原来的位置时,它最终会被卡住。至少,理论上我是这样理解的。
我想避免详细介绍的原因是因为position: sticky
它是全新的、实验性的(如您链接到的文档中所示),尚未最终确定。即使是我上面所说的,在不久的将来也可能会发生变化。无论如何,您将无法使用position: sticky
(希望这会在明年发生变化)。
position: sticky
Mozilla 最近在这里展示了它的实现。非常值得一看。
请参阅这个不言自明的示例以获得更好的清晰度。编解码器
固定位置:
相对于视口或浏览器窗口本身显示具有固定位置的元素。即使页面滚动,它也始终保持在同一个位置。
它不会影响页面中其他元素的流动,即不占用任何特定空间(就像position: absolute
)。
如果它是在其他容器中定义的(有或没有相对/绝对位置的 div),它仍然是相对于浏览器而不是那个容器定位的。(这里与 不同position: absolute
)。
粘性位置:
具有粘性位置的元素根据用户的滚动位置进行定位。正如@Boltclock 所提到的,它基本上就像位置:相对,直到一个元素滚动到一个特定的偏移量之外,在这种情况下它变成了位置:固定。当它向后滚动时,它会回到之前的(相对)位置。
它影响页面中其他元素的流动,即占据页面上的特定空间(就像position: relative
)。
如果它是在某个容器内定义的,则它是相对于该容器定位的。如果容器有一些溢出(滚动),根据滚动偏移量它变成位置:固定。
因此,如果您想在容器内实现固定功能,请使用粘性。
假设您的网站顶部有一个导航栏,并且您希望将其固定,以便当您向下滚动页面时,它始终可见。
如果你给它,position: fixed;
那么顶部的页面内容将隐藏在导航栏下方。相比之下,如果你决定给它position: sticky; top: 0;
,导航栏将留在文档流中,并优雅地将其下方的内容推到下方,因此不会隐藏任何内容。
当您应用position: fixed;
导航栏时,会从正常的文档流中转义,类似于您float
使用元素时。
fixed
固定在 X 和 Y 轴上,而sticky
仅固定在 X 轴上。sticky
只会固定到容器的末尾,但fixed
会固定到网页的末尾。