使用纯CSS实现一个滚动进度条

351 阅读1分钟

"使用纯CSS实现一个滚动进度条

<!DOCTYPE html>
<html>
<head>
<style>
.progress-bar {
  width: 100%;
  height: 20px;
  background-color: #f2f2f2;
  border-radius: 10px;
  overflow: hidden;
}

.progress-bar-inner {
  height: 100%;
  width: 0%;
  background-color: #4CAF50;
  transition: width 0.5s ease-in-out;
}

body {
  height: 2000px;
}

/* 模拟页面滚动 */
body::after {
  content: \"\";
  display: block;
  height: 4000px;
}
</style>
</head>
<body>
<div class=\"progress-bar\">
  <div class=\"progress-bar-inner\"></div>
</div>

<script>
window.addEventListener('scroll', function() {
  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  var windowHeight = document.documentElement.clientHeight || window.innerHeight;
  var documentHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
  var scrollPercentage = (scrollTop / (documentHeight - windowHeight)) * 100;
  var progressBarInner = document.querySelector('.progress-bar-inner');
  progressBarInner.style.width = scrollPercentage + '%';
});
</script>
</body>
</html>

这段代码实现了一个滚动进度条,使用纯CSS和一点点JavaScript。首先,我们创建了一个包含进度条的容器,用于显示进度条的背景颜色和形状。然后,我们使用一个内部的元素来表示进度条的进度,通过设置其宽度为0来初始隐藏进度条。

在JavaScript部分,我们监听页面的滚动事件,通过计算滚动的位置和页面的高度,来确定滚动的百分比。然后,我们通过选择器获取进度条的内部元素,将其宽度设置为计算得到的滚动百分比,从而实现进度条的动态效果。

需要注意的是,为了模拟页面滚动,我们在CSS中设置了body元素的高度为2000px,并在其后添加了一个伪元素,使页面看起来有滚动条。

这段代码可以直接在浏览器中运行,当你滚动页面时,进度条会根据滚动位置显示相应的进度。你可以根据需要修改进度条的样式,比如修改颜色、高度等。 "