使用自定义滑块组件通过vuejs控制div中的水平滚动

时间:2019-02-27 07:37:39

标签: javascript vue.js

在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,因为这是我对某些看起来不错的行为(显然不是在每个屏幕上)最接近的行为。任何想法我怎么能以更好的更准确的方式控制滚动?

0 个答案:

没有答案