关键词:自定义滚动条、自定义顶部滚动条

要实现页面顶部的自定义滚动进度条样式,可以按照以下步骤进行:

  1. 在HTML中添加滚动进度条的容器元素,通常可以使用一个

    元素作为容器,放在页面顶部的合适位置。

 1<div id="scroll-progress"></div>
  1. 在CSS中定义滚动进度条的样式。可以使用背景颜色、高度、透明度等属性来自定义样式。
 1#scroll-progress {
 2  position: fixed;
 3  top: 0;
 4  left: 0;
 5  width: 100%;
 6  height: 5px;
 7  background-color: #f00; /* 自定义进度条颜色 */
 8  opacity: 0.7; /* 自定义进度条透明度 */
 9  z-index: 9999; /* 确保进度条显示在最顶层 */
10}
  1. 使用JavaScript来监听页面滚动事件,并更新滚动进度条的宽度。
 1 var scrollProgress = document.getElementById('scroll-progress');
 2var requestId;
 3
 4function updateScrollProgress() {
 5  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
 6  var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
 7  var progress = (scrollTop / (scrollHeight - window.innerHeight)) * 100;
 8  scrollProgress.style.width = progress + '%';
 9  requestId = null;
10}
11
12function scrollHandler() {
13  if (!requestId) {
14    requestId = requestAnimationFrame(updateScrollProgress);
15  }
16}
17
18window.addEventListener('scroll', scrollHandler);

以上就是一个简单的实现页面顶部自定义滚动进度条样式的方法。根据自己的需求,可以调整CSS样式和JavaScript的逻辑来实现不同的效果。

完整代码:

 1<!DOCTYPE html>
 2<html>
 3<head>
 4  <title>自定义滚动进度条样式</title>
 5  <style>
 6      #scroll-progress {
 7          position: fixed;
 8          top: 0;
 9          left: 0;
10          width: 100%;
11          height: 5px;
12          background-color: #f00; /* 自定义进度条颜色 */
13          opacity: 0.7; /* 自定义进度条透明度 */
14          z-index: 9999; /* 确保进度条显示在最顶层 */
15      }
16  </style>
17</head>
18<body>
19<div id="scroll-progress"></div>
20
21<!-- 假设有很长的内容 -->
22<div style="height: 2000px;"></div>
23
24<script>
25  var scrollProgress = document.getElementById('scroll-progress');
26  var requestId;
27
28  function updateScrollProgress() {
29    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
30    var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
31    var progress = (scrollTop / (scrollHeight - window.innerHeight)) * 100;
32    scrollProgress.style.width = progress + '%';
33    requestId = null;
34  }
35
36  function scrollHandler() {
37    if (!requestId) {
38      requestId = requestAnimationFrame(updateScrollProgress);
39    }
40  }
41
42  window.addEventListener('scroll', scrollHandler);
43</script>
44</body>
45</html>
个人笔记记录 2021 ~ 2025