跳转到内容
返回

网页浏览进度条

网页浏览进度条

在很多网站都能看到网站的顶部,有一条会随着页面滚动条的滑动,边长变短的一栏区域,这个可以有效的让用户看到,自己已经浏览了这个文章内容的多少。虽然网站右边都有一个滚动条了,干嘛还要这个东西呢,大概就是为了好看吧!今天来实现这个小demo!

用到的知识

css

position:fixed

js

document.documentElement.scrollTop

document.body.clientHeight

document.documentElement.clientHeight

scroll

分析

问题

解决

实例

代码

CSS

body {
  margin: 0 auto;
  padding: 0;
  overflow-x: hidden;
  position: relative;
}

.con {
  width: 100vw;
  /* 让页面出现滚动条 */
  height: 1000vh;
  background-color: lightblue;
}

.top {
  position: fixed;
  top: 0;
  width: 100vw;
  height: 5px;
  background-color: lightcoral;
}

HTML

<!-- 进度条 -->
<div class="top" id="top"></div>
<!-- 网站内容 -->
<div class="con" id="con"></div>

JS

let slip = document.querySelector("#top");
let con = document.querySelector("#con");
let viewHeight = document.documentElement.clientHeight;
// 获取当前屏宽
let slipWidth = slip.clientWidth;
// 获取文档总长
let documentHeight = document.body.clientHeight;
// (文档总长-屏幕可视窗口height)/当前屏width
let prop = slipWidth / (documentHeight - viewHeight);
// 初始化 让top宽度变为0
slip.style.width = 0;
// 设置宽度
let setWith = (dom, h) => {
  dom.style.width = `${h}px`;
  dom.style.transition = "width 0.5s";
};
window.addEventListener("scroll", () => {
  // 实时获取滑动的高度
  let scroHeight = document.documentElement.scrollTop;
  setWith(slip, scroHeight * prop);
});


上一篇
关于call,bind,apply
下一篇
浮动功能栏
×