【发布时间】:2021-06-10 21:35:24
【问题描述】:
我有一个范围滑块正在滚动 DIV 中的内容。
如果您单击可滚动区域,您将看到可以左右拖动可滚动 DIV。但是,当您这样做时,范围不会更新。手动滚动 DIV 时有没有办法更新范围?我试图让 onscroll() 位置更新范围,但没有运气。
https://jsfiddle.net/esoteric/fxtonew7/5/
//Range Slider
var scroll = document.getElementById("scroll-range");
var panel = document.getElementById("scrolling-container");
var total = panel.scrollWidth - panel.offsetWidth;
var percentage = total * (this.value / 100);
var percentageWidth = total / 10; //10% for each +/- click
scroll.oninput = function() {
panel = document.getElementById("scrolling-container");
total = panel.scrollWidth - panel.offsetWidth;
percentage = total * (this.value / 100);
panel.scrollLeft = percentage;
}
//Foward Arrow
document.getElementById("increase").addEventListener("click",
function() {
scroll.stepUp(10);
panel.scrollBy(percentageWidth, 0)
});
//Back Arrow
document.getElementById("decrease").addEventListener("click",
function() {
scroll.stepUp(-10);
panel.scrollBy(-percentageWidth, 0)
});
//Desktop grab and scroll
const slider = document.getElementById("scrolling-container");
let isDown = false;
let startX;
let scrollLeft;
slider.addEventListener('mousedown', (e) => {
isDown = true;
slider.classList.add('active');
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
slider.addEventListener('mouseleave', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mouseup', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mousemove', (e) => {
if (!isDown) return;
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 3;
slider.scrollLeft = scrollLeft - walk;
});
【问题讨论】:
-
滑块和左/右按钮似乎对我来说都很好。我没有看到一个行为与另一个不同。你想更新什么
the range?
标签: javascript range scrollable