关于命名
我也不知道这个具体的名字叫什么,就按照它的功能起了这么个简单的名字,防止说不清楚,大概解释一下是什么东西。就是在很多网页,我们往下滑时,会在页面的固定位置出现一个(一栏、一片等!)按钮,里面有帮助回到网页顶部的,还有联系网站客服等等的操作。
像这样
分析
问题
- 首先就是根据喜好做一排这样的区域(自行发挥)
- 其次就是确定它要出现的位置( 重点 )即可。
- 还有几个小细节,就是当回到页面顶部时,这一部分区域会隐藏,当再次滑动到页面非顶部的位置是,又会再一次出现。
解决
- 固定位置:通过position的fixed固定
- 通过opacity控制显示显示/隐藏
- 判断何时显示/隐藏:通过获取滚动条滚动的height判断
用到的知识
css
position
js
scrollTop
scrollTo
- scrollTo() 方法可把内容滚动到指定的坐标。
onwheel
- 鼠标滑轮滚动事件
- onmousewheel注意,有些文章是写的这个事件,该事件已经废弃(但是有的环境还是可以用),换成了onwheel
代码
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| ...
.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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| let con = document.querySelector('#con'); let float = document.querySelector('#float'); let backtop = document.querySelector('#backtop');
let set = function (op, zi) { float.style.opacity = op; float.style.zIndex = zi; }
backtop.addEventListener('click', function () { scrollTo(0, 0); set(0, 0); });
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); } });
|