在Vue应用程序中,我创建了一个滑块来控制div内的水平滚动。我设法实现了所需的逻辑,但问题是要保持滑块的位置与div本身对齐。我假设我可能想使用event.target.offsetWidth
,但我想不出如何以使div和滑块位置对齐的方式移动,这将是有意义的。我当前的代码如下:
滑块html:
<div class="slidercontainer">
<button class="right-scroll">></button>
<input
type="range"
min="1"
max="100"
value="10"
class="slider"
v-on:input="myFunction"
id="myRange"
>
<button class="left-scroll">></button>
滑块CSS:
.slidercontainer {
position: absolute;
width: 90%;
bottom: -100px;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 10px;
border-radius: 5px;
background: #d3d3d3;
outline: none;
opacity: 0.7;
-webkit-transition: 0.2s;
transition: opacity 0.2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 85px;
height: 60px;
border: 0;
background: url("./../../../../assets/images/slider-button.png");
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 85px;
height: 60px;
border: 0;
background: url("./../../../../assets/images/slider-button.png");
cursor: pointer;
}
以及控制滚动的方法,有效的方法是:
myFunction($event) {
let content = document.querySelector(".table-container");
try {
if (this.follower > $event.target.value) {
console.log("scroll right");
content.scrollLeft += 75;
} else {
console.log("scorollingLeft");
content.scrollLeft -= 75;
}
this.follower = $event.target.value;
} catch (e) {
console.log(e)
}
}
正如您现在所看到的,我将scrollLeft
的值增加或减少了75,因为这是我对某些看起来不错的行为(显然不是在每个屏幕上)最接近的行为。任何想法我怎么能以更好的更准确的方式控制滚动?