【css js】使用 scroll-snap-type和scroll-snap-align写了一个整屏滚动页面,用js写页面滚动事件时被卷去的头部一直为0,不知道怎么办?
想实现的功能是:当页面开始滚动时,一个固定定位的盒子位置改变。
类似于蛋仔网站https://party.163.com/ 当页面滚动时右侧导航栏向左滑动出现。
求求了看看我吧纯自学好难啊谢谢大家!
<script>
// 1.导航栏向左滑动出现模块
const main = document.querySelector('.main-wrap')
const s = document.querySelector('.switch')
main.addEventListener('scroll', function () {
const n = document.documentElement.scrollTop
console.log('滚动了') //这里会正常输出
console.log(n) //这里输出一直为0
if (n > 0) {
s.style.right = '50px'
}
})
</script>
omg AI好牛 怎么办怎么办有了AI要我何用
回答:此时你这个需求比较适合用GSAP来实现,可以参考渡一web袁老师讲的一个示例
当你在一个使用了 CSS scroll-snap
的页面上尝试通过 JavaScript 监听滚动事件并获取滚动位置时,可能会遇到 scrollTop
或 pageYOffset
始终为 0 的情况。这通常是因为滚动事件是在一个滚动容器内部触发的,而不是在 document.documentElement
或 window
上。
由于你提到了 scroll-snap
,我猜测你的滚动事件可能是在一个具有滚动能力的容器元素(如 .main-wrap
)上触发的,而不是在文档的根元素上。为了修复这个问题,你应该在 .main-wrap
上添加滚动事件监听器,并检查该元素的 scrollTop
属性。
这里是修改后的代码示例:
<script>
// 1. 导航栏向左滑动出现模块
const main = document.querySelector('.main-wrap'); // 假设这是你的滚动容器
const s = document.querySelector('.switch');
// 在 main 上添加滚动事件监听器,而不是在 document.documentElement 上
main.addEventListener('scroll', function () {
// 使用 main 的 scrollTop 而不是 document.documentElement.scrollTop
const n = this.scrollTop; // 'this' 在这里指的是 main
console.log('滚动了');
console.log(n); // 这里将输出实际的滚动位置
if (n > 0) {
s.style.right = '50px';
} else {
// 可能还需要一个条件来处理滚动回顶部时的情况
s.style.right = 'initial'; // 或者你想要的任何默认位置
}
});
</script>
请注意,如果 .main-wrap
没有滚动条(即其内容没有超出其可视区域),那么滚动事件将不会触发。确保 .main-wrap
的高度足够大,或者至少有一个可以滚动的子元素。
另外,你还需要确保 .main-wrap
的 overflow
属性设置为 auto
或 scroll
,以便它可以有滚动条并触发滚动事件。
最后,如果你想要实现类似于蛋仔网站那样的导航栏效果,你可能还需要添加一些过渡效果(使用 CSS transition
属性)来平滑地改变 .switch
的位置。
我有一个这样的代码,我想在滚动期间将一个类添加到我的头上,但是在函数 这是我的html 这是我的jQuery 类没有被添加...在浏览器中,即使在滚动之后,控制台日志函数也没有输出任何内容 解决方案 我把窗户拆了,加了一个尸体,它起作用了。
问题内容: 我正在创建一个标头,一旦滚动到一定数量的像素,它就会固定并保持在原位。 我可以只使用CSS和html来执行此操作吗,还是也需要jquery? 我创建了一个演示,以便您可以理解。任何帮助将是巨大的! 问题答案: 您需要一些JS来进行滚动事件。最好的方法是为固定位置设置一个新的CSS类,当滚动超过某个点时,该类将分配给相关的div。 HTML CSS jQuery 编辑:扩展示例 如果触发
我是JavaFX的新手,不知道如何解决这个问题。所以,我在TableView中有一个复选框列。例如,我先选择3个框,然后向下滚动表格。但当我进入表格顶部时,复选框没有被选中。以下是一些代码: 和数据类"User":
问题内容: 我如何避免滚动页面的其余部分?我考虑过使用和,只是想知道是否有更简单,更用户友好的方法,这样做的最佳实践是什么? 问题答案: 使用的包含您的头,喜欢的东西 在此示例中,当开始时位于下方100px处,但随着用户滚动,它保持原位。当然,不用说,您需要确保有背景,以便当两个s重叠时,其内容实际上是可见的。
问题内容: 我在移动鼠标时在状态栏中显示document.body.scrollTop的值。在IE中,该值始终为0。为什么总是0?还有另一种方法来获取滚动条移动了多少? 问题答案: 您可能要尝试在IE中使用较旧的文档类型:
本文向大家介绍js滚轮事件 js自定义滚动条的实现,包括了js滚轮事件 js自定义滚动条的实现的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js自定义滚动条的实现的具体代码,供大家参考,具体内容如下 描述: 自定义滚动条的实现 效果: 实现: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。