div 使用 javascript 的滚动百分比
Scroll percentage for a div using javascript
const rightSide = document.querySelector("#rightSide");
let scrollPercentage = () => {
let h = document.documentElement;
let st = h.scrollTop || document.body.scrollTop;
let sh = h.scrollHeight || document.body.scrollHeight;
let percent = st / (sh - h.clientHeight) * 100;
console.log(percent);
}
rightSide.onscroll = scrollPercentage;
.right-side {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 90%;
width: 90%;
background-color: #eee;
overflow-y: scroll;
}
.top-page {
width: 100%;
height: 100%;
background-color: red;
}
.bot-page {
width: 100%;
height: 100%;
background-color: yellow;
}
<div class="right-side" id="rightSide">
<div id="top-page" class="top-page"></div>
<div id="bot-page" class="bot-page"></div>
</div>
我正在制作一个网站,我想获得 div 的滚动百分比。我在 YouTube https://youtu.be/-FJSedZAers 上使用了 Tyler Pott 的视频,他对整个页面都这样做(使用正文)。这是我的代码:
const rightSide = document.querySelector("#rightSide")
let scrollPercentage = () => {
let h = document.documentElement;
let st = h.scrollTop || document.body.scrollTop;
let sh = h.scrollHeight || document.body.scrollHeight;
let percent = st / (sh - h.clientHeight) * 100;
console.log(percent);
}
rightSide.onscroll = scrollPercentage;
当我 运行 这样做时,控制台只输出“NaN”,这是可以预料的。我不确定我应该怎么做才能将该代码传输到 divs。我尝试使用
之类的东西
const topPage = document.querySelector("#top-page");
然后在 document.body.scrollTop
等中添加 topPage 而不是正文,但这显然不起作用。
这有点像 HTML 的样子,首页的宽度和高度与右侧 div 相同,底部页面的宽度与右侧的最小高度相同右侧 div.
<div class="right-side" id="rightSide">
<div id="top-page" class="top-page"></div>
<div id="bot-page" class="bot-page"></div>
</div>
回到这里我知道我必须理解分配给变量的值才能使等式更简单。
因此,快速搜索 documentElement 让我找到了这个答案:
"documentElement returns 作为文档根元素的元素(例如,HTML 文档的元素)"
然后,我意识到也许这就是问题所在,而且确实如此。我将 rightSide 分配给 h,这就是所需的全部内容。
let h = rightSide;
不确定这是否完全正确,有时在卷轴结束时你可以获得 100.05 或更多,但我不需要精确的数字。希望这有帮助。
const rightSide = document.querySelector("#rightSide");
let scrollPercentage = () => {
let h = document.documentElement;
let st = h.scrollTop || document.body.scrollTop;
let sh = h.scrollHeight || document.body.scrollHeight;
let percent = st / (sh - h.clientHeight) * 100;
console.log(percent);
}
rightSide.onscroll = scrollPercentage;
.right-side {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 90%;
width: 90%;
background-color: #eee;
overflow-y: scroll;
}
.top-page {
width: 100%;
height: 100%;
background-color: red;
}
.bot-page {
width: 100%;
height: 100%;
background-color: yellow;
}
<div class="right-side" id="rightSide">
<div id="top-page" class="top-page"></div>
<div id="bot-page" class="bot-page"></div>
</div>
我正在制作一个网站,我想获得 div 的滚动百分比。我在 YouTube https://youtu.be/-FJSedZAers 上使用了 Tyler Pott 的视频,他对整个页面都这样做(使用正文)。这是我的代码:
const rightSide = document.querySelector("#rightSide")
let scrollPercentage = () => {
let h = document.documentElement;
let st = h.scrollTop || document.body.scrollTop;
let sh = h.scrollHeight || document.body.scrollHeight;
let percent = st / (sh - h.clientHeight) * 100;
console.log(percent);
}
rightSide.onscroll = scrollPercentage;
当我 运行 这样做时,控制台只输出“NaN”,这是可以预料的。我不确定我应该怎么做才能将该代码传输到 divs。我尝试使用
之类的东西 const topPage = document.querySelector("#top-page");
然后在 document.body.scrollTop
等中添加 topPage 而不是正文,但这显然不起作用。
这有点像 HTML 的样子,首页的宽度和高度与右侧 div 相同,底部页面的宽度与右侧的最小高度相同右侧 div.
<div class="right-side" id="rightSide">
<div id="top-page" class="top-page"></div>
<div id="bot-page" class="bot-page"></div>
</div>
回到这里我知道我必须理解分配给变量的值才能使等式更简单。
因此,快速搜索 documentElement 让我找到了这个答案:
"documentElement returns 作为文档根元素的元素(例如,HTML 文档的元素)"
然后,我意识到也许这就是问题所在,而且确实如此。我将 rightSide 分配给 h,这就是所需的全部内容。
let h = rightSide;
不确定这是否完全正确,有时在卷轴结束时你可以获得 100.05 或更多,但我不需要精确的数字。希望这有帮助。