html 滚动条_页面顶部滚动条效果

df1a31c25080fd7e6c79fd821bc9f5ba.png

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>顶部滚动条</title>
<style>
*{padding: 0;margin: 0;}
body{height:1000px;}
.barTop{height: 4px;width: 0%;position: fixed;top: 0;left: 0;right: 0;}
</style>
</head>
<body>
<script>
class TopBarScroll{
vH = document.body.scrollHeight; //页面整个页面高度
cH = document.documentElement.clientHeight; //窗口可视高度
constructor(color){
this.color = color || '#3498db';
}
el = null;
createDiv(){
this.el = document.createElement('div');
this.el.className="barTop"
this.el.style.backgroundColor = this.color;
document.body.appendChild(this.el);
}
init(){
let fag = this.hasScrollbar();
if(fag){
this.createDiv();
window.onscroll = this.scroll.bind(this);
}
}
scroll(){ //window 滚动事件
let sH = this.getScrollTop();
let s = this.getPercent(sH,(this.vH - this.cH))
this.el.style.width = s;
}
getScrollTop(){ //滚动条距上距离
var scrollTop=0;
if(document.documentElement&&document.documentElement.scrollTop)
{
scrollTop=document.documentElement.scrollTop;
}
else if(document.body)
{
scrollTop=document.body.scrollTop;
}
return scrollTop;
}
getPercent(num, total){ //获取百分比
num = parseFloat(num);
total = parseFloat(total);
if (isNaN(num) || isNaN(total)) {
return "-";
}
return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00)+"%";
}
hasScrollbar() { //判断是否有滚动条,如果没有就不生成DIV元素
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);
}
}
window.onload = function(){
let b = new TopBarScroll("#9b59b6");
b.init();
}
</script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值