【发布时间】:2020-08-21 04:36:00
【问题描述】:
我正在尝试为产品卡轨道创建一个进度条,因此通过用户点击上一个和下一个按钮(将向后或向前滚动),进度条将前进或备份。 这是我想出的代码。问题是第一次单击没有显示任何结果,并且上一个按钮第一次像下一个按钮一样。就像代码落后了一步。 我对 javaScript 很陌生,我不知道这是怎么发生的。
const productScroll = () => {
rightButton.onclick = function () {
let scrollLeft = document.querySelector('#ProductSlider').scrollLeft;
let scrollPercent = ((scrollLeft - 0) / (5033 - 0)) * (100 - 0) + 0;
document.querySelector('div.progress-bar').style.width = `${scrollPercent}%`;
};
leftButton.onclick = function () {
let scrollLeft = document.querySelector('#ProductSlider').scrollLeft;
let scrollPercent = ((scrollLeft - 0) / (5033 - 0)) * (100 - 0) + 0;
document.querySelector('div.progress-bar').style.width = `${scrollPercent}%`;
};
【问题讨论】:
-
分享更多代码来调试您的问题,包括 css 和 html。
-
不管怎样,a native progress bar element 可能满足您的要求。
-
几个问题:
5033来自哪里,为什么- 0和你确定scrollLeft / 5033介于0 和1 之间(所以最大scrollLeft是5033) ? -
首先谢谢您!公式是这样的: new_value = ( (old_value - old_min) / (old_max - old_min) ) * (new_max - new_min) + new_min 我知道我不必包括 0,但我只是想把公式放在一起,是的,最大 scrollLeft 为 5033。
标签: javascript