javascript - 当窗口滚动到顶部时,如何隐藏一个 div?

标签 javascript jquery

向下滚动页面时,我有一个向上箭头淡入。我怎样才能让它在用户滚动回页面顶部时淡出?

这就是我目前所拥有的。箭头会消失一秒钟,然后淡出我不想要的位置 - 它应该保持隐藏状态。

function footerFadeIn() {
  $(window).scroll(function() {
    $('footer').fadeIn('slow');
  });
}

function footerFadeOut() {
  $('footer').fadeOut('slow');
  $('footer').hide();
}

$(window).scroll(function() {
  if ($(window).scrollTop() == 0) {
    footerFadeOut();
  } else if ($(window).scrollTop() > 0) {
    footerFadeIn();
  }
});
footer {
  position: fixed;
  bottom: 0;
  right: 0;
  padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<footer>
  <i class="fas fa-chevron-up" style="font-size: 35px;"></i>
</footer>

我在这里的想法是有两个函数 - footerFadeIn()footerFadeOut()。然后我有一个 if 语句来检查窗口是否从零的 scrollTop() 滚动开并执行相应的函数。

编辑:我的问题与建议的问题不同,因为我只有两个导致问题的事件处理程序。

最佳答案

问题是因为您在 footerFadeIn() 中添加了滚动事件处理程序。因此,当滚动事件发生时,您最终会创建另一个新的滚动事件处理程序。要解决此问题,只需删除该函数中的滚动处理程序并保留在 DOM 加载时调用的主要处理程序。

另请注意,您需要在fadeOut() 的回调中调用hide()。这就是为什么淡出动画没有正确发生的原因。试试这个:

function footerFadeIn() {
  $('footer').fadeIn('slow');
}

function footerFadeOut() {
  $('footer').fadeOut('slow', function() {
    $(this).hide();
  });
}

$(window).scroll(function() {
  if ($(window).scrollTop() == 0) {
    footerFadeOut();
  } else if ($(window).scrollTop() > 0) {
    footerFadeIn();
  }
});
html,
body {
  height: 2000px;
}

footer {
  position: fixed;
  bottom: 0;
  right: 0;
  padding: 20px;
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css" />
<footer>
  <i class="fas fa-chevron-up" style="font-size: 35px;"></i>
</footer>

关于javascript - 当窗口滚动到顶部时,如何隐藏一个 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59192325/

相关文章:

javascript - 在特定位置添加 <li>

java - 如何创建基于 JavaScript 数组的 Java 列表?

javascript - 如何在单击单选按钮后在固定的时间间隔内禁用它们?

javascript - 当输入键有空格时过滤json javascript

jquery - 内部带有列表滚动条和滚动按钮的 Div

javascript - 选择一个标签并使用 jquery 更改其文本

jquery - 是否有 ext.js 工具栏的 jquery 克隆?

javascript - 使 html 表可排序(使用 javascript 加载标题和数据)

javascript - 使用 Javascript 将 HTML 中的 Json 转换为 unicode

asp.net - 数据库中的编码 HTML 返回页面