在纯JavaScript中,在滚动位置后隐藏div



我是一名网络开发新手,正在开发一个博客网站。

代码函数-我在屏幕底部附近有一个浮动的分页栏。当访问者到达页脚附近时,我想隐藏这个分页栏。

我的代码和我迄今为止尝试的内容-

var footerPos = document.querySelector("footer").offsetTop;
var partOfScreen = screen.height * 0.08;
var pointToHide = footerPos - screen.height + partOfScreen;
console.log(`footerPos- ${footerPos} ; pointToHide- ${pointToHide} ; screen.height - ${screen.height}`);
window.onscroll = function() {
if (window.scrollY > pointToHide) {
document.getElementById("pagination").style.transform = "scale(0)";
} else {
document.getElementById("pagination").style.transform = "scale(1)";
}
}
<ul class="pagination pagination-rounded justify-content-center" id="pagination" style="
position: fixed;
bottom: 4vh;
transform: scale(1); 
/*this is the property which should change to - scale(0) - on scroll*/
margin: 0 auto;
z-index: 1000;
transition: all 0.2s, transform 0.2s cubic-bezier(0.5, 0, 1, 2);
">
<li class="page-item" style="border-radius: 50px;-webkit-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);-moz-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);box-shadow: 1px 1px 3px 0px rgba(0, 0, 0, 0.8);">
<a class="page-link" href="#" onclick="window.history.back()" style="border-radius: 55px;">
<i class="int-arrow-left"></i>
</a>
</li>
<li class="page-item active" style="border-radius: 50px;-webkit-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);-moz-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);box-shadow: 1px 1px 3px 0px rgba(0, 0, 0, 0.8);">
<a class="page-link" href="#">1 </a>
</li>
<li class="page-item" style="border-radius: 50px;-webkit-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);-moz-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 1);box-shadow: 1px 1px 3px 0px rgba(0, 0, 0, 0.8);">
<a class="page-link" href="https://www.zealforgood.com/test-categories?index=9" style="border-radius: 55px;">
<i class="int-arrow-right"></i>
</a>
</li>
</ul>

在上述<script>

我从顶部得到页脚的位置

从上面的值中减去屏幕高度的一部分<页脚的位置>(增加一些偏移量(。

我创建了一个带有if语句的window.onscroll()函数,以在scrollY位置大于上述值时隐藏元素。

你可以在这个网站的源上看到这个代码

到目前为止,我已经尝试了很多更改,但都没能实现。有人能帮我找出我编码错误的地方吗。

我不熟悉jQuery,请用简单的JavaScript帮助我。

基本上我认为你的代码还可以。你在这里给出的代码片段中没有放一个页脚元素,这个片段可能因此而不起作用,但我提取了你给出的代码,添加了一个页脚和一堆可滚动的文本,它起了作用,尽管没有所有花哨的CSS样式。

然而,当我去你提供的网站时,我可以看到它不起作用。

问题似乎是代码的其他部分也在滚动设置事件侦听器。如果您在浏览器中使用开发工具并查看事件侦听器,您可以看到有4个。若您在测试类别中的代码中放入console.log,那个么它永远不会到达那个里。

但是,如果删除列出的第一个事件侦听器(在jquery中(,那么代码就会工作,并且当向下滚动页面时,当您靠近页脚时,分页列表就会消失。

恐怕我对jquery一无所知,而且源代码中只有缩小的代码,我看不出这个事件侦听器是在哪里/为什么设置的。

我本想对你的问题发表评论,因为我还没有为你找到完整的答案,但我是新来的,没有足够的声誉发表评论。

不管怎样,希望这个事件监听器的东西能为你指明一个有用的方向。

最新更新