sticky定位的问题?

作者站长头像
站长
· 阅读数 14

大佬们,本人想实现苹果官网的使用裁剪的方式实现颜色切换,切换到最后一张时取消sticky定位,继续浏览网站的内容。但我现在遇到了网站内容占位颜色切换的情况,请问怎么解决呢?

回复
1个回答
avatar
test
2024-06-30

如果只做一个比简单的修改,可以通过给 #box2 元素增加 background:white;z-index:2 和给 #box3 添加 z-index:1 来实现你期望的效果。


但你的问题并不是在样式上面,而是在设计上面。就是你使用了 position:sticky 想要让颜色切换的部分固定在当前视窗。但是你的容器 #box2 的高度是 100vh 的,所以稍微滚动一下就会展示下一屏的部分,但是你又想通过判断 滚动条位置(document.documentElement.scrollTop) 和 页面可滚动区域(document.documentElement.scrollHeight) 来处理是否让颜色容器开启 no-sticky 的样式。所以你给 body 元素设置了 height:500vh 来假装页面可以滚动很多的距离,来达到你所“期望”的滚动效果。

所以需要考量一下是否应该这样设计。可以通过观察苹果官网的具体实现来复刻。也可以参考社区内已经有人分享过的文章来实现。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容