角度如何在悬停时使X平滑滚动(自动)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了角度如何在悬停时使X平滑滚动(自动)相关的知识,希望对你有一定的参考价值。

我有一个component,其中的画廊带有X axis

<div class="gallery">
    <div (mouseenter)="scrollTo('left', $event)" (mouseleave)="clearIntervalRepeater()" class="left"></div>
    <div (mouseenter)="scrollTo('right', $event)"  (mouseleave)="clearIntervalRepeater()" class="right"></div>
    <div class="container-fluid">
        <div #sidewayScroller class="sideway">
            <img *ngFor="let item of galleryImages" [src]="item" alt="gallery-image">
        </div>
    </div>
</div>

您可以看到,我在“ left”和“ right”内有两个divs,它们是透明的绝对div,仅用于将鼠标悬停以影响#sidewayScroller

我正在尝试使鼠标悬停在“左”或“右”侧上来实现平滑滚动。

我的悬停功能:

  scrollTo(position, event: htmlElement){
    if(position == 'left'){
      console.log('left');
      this.repeater = setInterval(() => {
        this.el.nativeElement.scrollTo({
          left: this.el.nativeElement.scrollLeft - 200,
          behavior: 'smooth',
        })
      }, 150);
    } else {
      this.repeater = setInterval(() => {
        console.log('right');
      this.el.nativeElement.scrollTo({
        left: this.el.nativeElement.scrollLeft + 200,
        behavior: 'smooth',
      })
    }, 180);
    }
  }

  clearIntervalRepeater(){
    console.log('clearing');
    clearInterval(this.repeater);
  }

问题,它不平滑,带有毛刺。我希望它会很平滑,但我无法获得该间隔,有人可以帮助我计算该间隔还是尝试其他方法?

答案

尝试使用时无滚动行为。滚动行为将平滑滚动到设置位置,但随后停止并必须重新开始。手动设置滚动位置并减小间隔和降低帧率的步骤应该可以解决您的问题:

以上是关于角度如何在悬停时使X平滑滚动(自动)的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有插件的情况下以角度 4 平滑滚动到页面锚点?

jQuery 平滑滚动片段以不同的速度工作

jCarousel - 如何通过自动滚动暂停悬停?

如何在悬停时使按钮内的文本透明?背景应该保持不变

如何在输入/编辑时使 UITextView 滚动

X轴动态数据显示平滑滚动