关于命名
我也不知道这个具体的名字叫什么,就按照它的功能起了这么个简单的名字,防止说不清楚,大概解释一下是什么东西。就是在很多网页,我们往下滑时,会在页面的固定位置出现一个(一栏、一片等!)按钮,里面有帮助回到网页顶部的,还有联系网站客服等等的操作。
像这样

分析
问题
- 首先就是根据喜好做一排这样的区域(自行发挥)
 - 其次就是确定它要出现的位置( 重点 )即可。
 - 还有几个小细节,就是当回到页面顶部时,这一部分区域会隐藏,当再次滑动到页面非顶部的位置是,又会再一次出现。
 
解决
- 固定位置:通过position的fixed固定
 - 通过opacity控制显示显示/隐藏
 - 判断何时显示/隐藏:通过获取滚动条滚动的height判断
 
用到的知识
css
js
- 获取滚动条滚动过的height
 
- scrollTo() 方法可把内容滚动到指定的坐标。
 
- 鼠标滑轮滚动事件
 - onmousewheel注意,有些文章是写的这个事件,该事件已经废弃(但是有的环境还是可以用),换成了onwheel
 
代码
CSS
...
/* 页面主要内容 */
.con {
  width: 100vw;
  /* 让页面出现滚动条 */
  height: 1100vh;
  background-color: lightcoral;
}
/* 浮动功能栏样式  */
.float {
  padding: 0;
  margin: 0;
  position: fixed;
  top: 70vh;
  right: 5vw;
  /* 默认不显示 */
  opacity: 0;
  z-index: 0;
  transition: all 0.5s;
}
/* 其他样式 */
li {
  width: 100px;
  height: 100px;
  text-align: center;
  line-height: 100px;
  list-style: none;
  background-color: #ffffff;
  border-radius: 50%;
  cursor: pointer;
}
HTML
<div class="con" id="con"></div>
<ul class="float" id="float">
  <li id="backtop">BACK</li>
</ul>
JS
let con = document.querySelector("#con");
let float = document.querySelector("#float");
let backtop = document.querySelector("#backtop");
// des:设置浮动功能栏的显示/隐藏
let set = function (op, zi) {
  float.style.opacity = op;
  float.style.zIndex = zi;
};
// 点击back返回顶部
backtop.addEventListener("click", function () {
  // 1.document.documentElement.scrollTop = 0;
  // 2.scrollTo返回
  scrollTo(0, 0);
  // 返回后隐藏
  set(0, 0);
});
// 这里更好的效果是换成window的滚动条事件,这样无论是鼠标滑轮还是,键盘翻页键,还是点击滚动条都可以触发
// window.addEventListener("scroll",***)
con.addEventListener("wheel", function () {
  // 获取可视区域宽高
  let viewHeight = document.documentElement.clientHeight;
  // 获取已经滚动条滚动了的高度
  let scrowHeight = document.documentElement.scrollTop;
  // 获取文档高
  let documentHeight = document.body.clientHeight;
  if (scrowHeight === 0) {
    // 隐藏按钮
    set(0, 0);
  } else {
    // 显示按钮
    set(10, 99);
  }
});