position: sticky现在在一些移动浏览器上可用,因此您可以使菜单栏随着页面滚动而滚动,但是当用户滚动超过它时,它会固定在视口的顶部。
但是,如果您想在当前“粘性”状态下稍微重新设计您的粘性菜单栏怎么办?例如,当它随页面滚动时,您可能希望该栏具有圆角,但是一旦它固定在视口的顶部,您希望去掉顶部圆角,并在其下添加一些阴影。
是否有任何伪选择器(例如::stuck
)来针对当前处于“sticky”状态的具有position: sticky
的元素?或者浏览器供应商是否有类似的东西在开发中?如果没有,我应该在哪里提出请求?
注意:对于这种情况,JavaScript解决方案并不好,因为在移动设备上,通常只有一个scroll
事件,当用户释放手指时才会触发,因此JS无法知道滚动阈值被穿过的确切时刻。
:stuck
把top
的值从0
改为300px
,然后向下滚动了150px
……它应该固定还是不固定?再考虑一下一个带有position: sticky
和bottom: 0
的元素,:stuck
也许会改变font-size
,从而改变元素的大小(因此改变了应该固定的时机)。 - Romanwhile
循环设计得不好,因为它允许无限循环 :) 不过,谢谢你的澄清 ;) - Marek Lisý