我想以百分比形式计算窗口内元素的滚动位置。
我很接近,但我知道我在思考数学中的一些错误。我制作了一个小演示来显示多个元素的滚动百分比,但百分比都是错误的。
function getElemScrollPercent(selector){
const scale = 0.1;
const el = document.querySelector(selector);
const out = el.querySelector('.out');
function calc(){
const rect = el.getBoundingClientRect();
//don't bother calculating if it's off screen
if (rect.top < window.innerHeight && rect.bottom > 0) {
const total = (window.scrollY) / (rect.bottom + rect.height);
const pct = total * 100;
out.innerHTML = `${Math.round(pct)}%`;
}
}
window.addEventListener('scroll', calc);
calc();
}
getElemScrollPercent('#one');
getElemScrollPercent('#two');
getElemScrollPercent('#three');
* { box-sizing: border-box; }
body { display: flex; flex-direction: column; min-height: 400vh }
section {
height: 100vh;
position: relative;
border: 1px solid black;
}
#one { background:#d1b4b4; }
#two { background:#b4d1bc; }
#three { background:#b4b5d1; }
.out {
position: sticky;
top: 0;
display: inline-block;
padding: .5rem;
background: #CCC;
}
% % %
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
正如您所指出的,我认为您在这些行中的数学有问题:
尝试用以下命令更改这些行:
请告诉我这是否可以解决您的问题,以便我可以提出其他建议。