【发布时间】:2020-12-27 12:47:03
【问题描述】:
我有一个关于 javascript 的问题。我正在创建一个面板,当滚动时,面板关闭,当我们位于页面底部时,#toTop div 将出现。
我做了如下功能代码。但是当我们在页面底部时,#toTop div 还没有出现。
到达底部页面时显示 #toTop div 的函数
$(window).scroll(function() {
if ($(this).scrollTop() > 0) {
openMenu();
} else if ($("body").height() <= ($(window).height() + $(window).scrollTop())){
$("#toTop").css("display","block");
} else{
closeMenu();
$("#toTop").css("display","none");
}
});
});
我的代码有什么遗漏或错误吗?请帮我。这是My Codepen
面板 HTML
<div id="floatingPanel">
<div class="panel-socmed open">
<a href="#" class="instagram">
<i class="fab fa-instagram"></i>
</a>
<a href="#" class="facebook">
<i class="fab fa-facebook-f"></i>
</a>
<a href="#" class="twitter">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="youtube">
<i class="fab fa-youtube"></i>
</a>
<a href="#" class="linkedin">
<i class="fab fa-linkedin-in"></i>
</a>
</div>
<div id="closeShare">
<i class="fas fa-times"></i>
<i class="fas fa-share-alt"></i>
</div>
<div id="toTop">
<i class="fas fa-chevron-up"></i>
</div>
</div>
功能打开/关闭面板
function toggleMenu() {
if ($(".panel-socmed").hasClass("open")) {
openMenu();
} else {
closeMenu();
}
}
function openMenu() {
$(".panel-socmed").removeClass("open");
$("#closeShare").find(".fa-times").hide();
$("#closeShare").find(".fa-share-alt").show();
}
function closeMenu() {
$(".panel-socmed").addClass("open");
$("#closeShare").find(".fa-times").show();
$("#closeShare").find(".fa-share-alt").hide();
}
$(document).ready(function() {
$('#closeShare').click(function() {
toggleMenu();
});
【问题讨论】:
-
我认为 $(this).scrollTop() > 0 应该是 $(this).scrollTop()
-
$(this).scrollTop() > 0打开面板,而不是#toTop。在页面底部显示#toTop的逻辑是这个 =>$("body").height() <= ($(window).height() + $(window).scrollTop())@firatozcevahir -
是的,但是当用户向下滚动时,它总是会碰到 if 语句的第一个 case,因为
$(this).scrollTop()总是大于 0 -
我尝试在 if 下做一个 if,它起作用了。像这样。代码有多简单? =>
if ($("body").height() <= ($(window).height() + $(window).scrollTop())){ $("#toTop").css("display","block"); } else { $("#toTop").css("display","none"); } }); -
您希望
Totopdiv 在页面末尾隐藏 - 仅此而已?
标签: javascript jquery panel