提问者:小点点

垂直滚动指示器


试图创建滚动指示器,该指示器不是水平的,而是垂直的。 问题是当我试图开始滚动显示位置没有缩放的条时。。。

HTML

<div id="scrollbar">
  <div id="bar">
  </div>
<div>

CSS

#scrollbar
{
  width: 1%;
  height: 100%;
  padding: 0;
  margin: 0 0 0 auto;
  right: 0;
  top: 0;
  position: fixed;
  visibility: visible;
  background-color: transparent;
}
#scrollbar #bar
{
  width: inherit;
  height: 0%;
  background-color: #ccc;
}

JS

var bar = document.getElementById("bar");
window.onscroll = function () { scrollIndicator() };
window.onload = function () { scrollIndicator() };
function scrollIndicator()
{
    var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
    var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
    var scrolled = 100;
    if(height > 0)
    {
        scrolled = (winScroll / height) * 100;
    }
    bar.style.height = scrolled + "%";
}

我绝对找不到问题所在。。。


共1个答案

匿名用户

您的网页没有足够的内容来滚动,因此滚动事件没有触发。

您需要修复html,#scrollbar缺少一个结束div标记,并在网页上添加足够的内容以使其滚动。

您还需要将#barwidthinherit更改为100%

null

var bar = document.getElementById("bar");

window.onscroll = function() {
  scrollIndicator()
};

function scrollIndicator() {
  var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
  var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
  var scrolled = 100;
  
  if (height > 0) {
    scrolled = (winScroll / height) * 100;
  }

  bar.style.height = scrolled + "%";
}
#scrollbar {
  width: 1%;
  height: 100%;
  padding: 0;
  margin: 0 0 0 auto;
  right: 0;
  top: 0;
  position: fixed;
  background-color: transparent;
}

#scrollbar #bar {
  width: 100%;
  height: 0%;
  background-color: blue;
}

.section {
  height: 100vh;
}

.section:nth-child(even) {
  background: green;
}

.section:nth-child(odd) {
  background: red;
}
<div id="scrollbar">
  <div id="bar"></div>
</div>

<div class="section"></div>
<div class="section"></div>
<div class="section"></div>