You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:无JS时显示返回顶部图标,有JS时按需显示的实现方案

问题

我让Ken Lee写了个返回顶部按钮的脚本,现在按钮默认隐藏,用户滚动后才显示。但我想到有些用户会因为安全原因禁用JS,这类用户根本看不到这个按钮。

我需要实现的效果:

  • 禁用JS时:返回顶部图标一直可见
  • 启用JS时:没滚动的时候隐藏,滚动后显示,点击回到顶部后再隐藏

现在的DIV是visibility:hidden,改成visible的话按钮就一直显示,只有点击后才消失。附上现有代码,求解决办法。

现有HTML代码

<div id="bottomx" style="visibility: hidden">
  <img
    src="img/toparrow.png"
    style="cursor: pointer"
    class="icons"
    title="Seitenanfang"
    onclick="javascript:xtop();"
  />
</div>

现有JS脚本

<script
  src="https://code.jquery.com/jquery-3.7.1.js"
  integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
  crossorigin="anonymous"
></script>

<script>
  function xtop() {
    $("#content").animate({ scrollTop: 0 }, "slow", function () {
      // Animation complete.
      document.getElementById("bottomx").style.visibility = "hidden";
    });
  }
</script>

<script>
  content.addEventListener("scroll", function () {
    if (this.scrollY == 0) {
      document.getElementById("bottomx").style.visibility = "hidden";
    } else {
      document.getElementById("bottomx").style.visibility = "visible";
    }
  });
</script>
解决方案

核心思路很简单:默认让按钮可见(给禁用JS的用户用),然后用JS在页面加载时立刻把它藏起来,这样开JS的用户一开始看不到,后续靠滚动逻辑控制显示隐藏。

1. 修改HTML

把DIV的style="visibility: hidden"改成style="visibility: visible",让按钮默认就显示:

<div id="bottomx" style="visibility: visible">
  <img
    src="img/toparrow.png"
    style="cursor: pointer"
    class="icons"
    title="Seitenanfang"
    onclick="javascript:xtop();"
  />
</div>

2. 修改JS脚本

加一段页面加载完成后隐藏按钮的代码,其他原有逻辑保留:

<script
  src="https://code.jquery.com/jquery-3.7.1.js"
  integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
  crossorigin="anonymous"
></script>

<script>
  // 页面加载完立刻隐藏按钮(开JS的用户才会执行这步)
  document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("bottomx").style.visibility = "hidden";
  });

  function xtop() {
    $("#content").animate({ scrollTop: 0 }, "slow", function () {
      // 回到顶部后隐藏按钮
      document.getElementById("bottomx").style.visibility = "hidden";
    });
  }
</script>

<script>
  content.addEventListener("scroll", function () {
    if (this.scrollY == 0) {
      document.getElementById("bottomx").style.visibility = "hidden";
    } else {
      document.getElementById("bottomx").style.visibility = "visible";
    }
  });
</script>

逻辑说明

  • 禁用JS的用户:按钮默认是可见的,没有JS修改它的状态,所以一直能看到。虽然点击按钮没有滚动动画,但用户可以手动滚动,按钮的存在不影响使用。
  • 启用JS的用户:页面加载完成后,JS立刻把按钮设为隐藏状态,后续滚动时根据滚动位置切换显示/隐藏,回到顶部后再次隐藏,完全符合需求。

内容的提问来源于stack exchange,提问作者Leander Rednael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:01:38