html - 使用angular2上的按钮水平滚动

标签 html css angular typescript

所以我在 angular2 中有这个应用程序,我需要水平滚动组件但左右按钮。所以我需要为每个向右或向左滚动内容的按钮提供一个功能。我需要这样的东西: enter image description here

我尝试使用 document.getElementById('myscrolldiv').animate({ scrollLeft: "-="+ 250 + "px"; } 但 Angular 无法识别 animate 行。

所以我正在寻找一种使用按钮但不使用 jquery 水平滚动的不同方式。有什么办法可以做到这一点吗?

这是我的html

<div class="container">
  <div class="side">
    <mat-icon (click)="scrollLeft()">keyboard_arrow_left</mat-icon>
  </div>
  <div id="widgetsContent" class="middle">
    <div class="scrolls">
      <div class="info-widget">
         WIDGET
      </div>
      <div class="info-widget">
         WIDGET
      </div>
      <div class="info-widget">
         WIDGET
      </div>
      <div class="info-widget">
         WIDGET
      </div>
      <div class="info-widget">
         WIDGET
      </div>
      <div class="info-widget">
         WIDGET
      </div>
    </div>
  </div>
  <div class="side">
    <mat-icon (click)="scrollRight()">keyboard_arrow_right</mat-icon>
  </div>
</div>

这是我的CSS

.container {
  display: flex;
  height: 22.5vh !important;
}

.side {
  width: 50px;
  height: 22.5vh !important;
}

.middle {
  flex-grow: 1;
  height: 22.5vh !important;
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
}

那么,如何按下按钮向右和向左滚动?请帮忙。

最佳答案

导入 ViewChild 和 ElementRef 以获取元素引用。

使用#localvariable,如此处所示,<div #widgetsContent class="middle">

获取组件中的元素,@ViewChild('widgetsContent', { read: ElementRef }) public widgetsContent: ElementRef<any>;

更改滚动值,this.widgetsContent.nativeElement.scrollTo({ left: (this.widgetsContent.nativeElement.scrollLeft + 150), behavior: 'smooth' });

示例如下

import { Component, OnInit, ViewChild, ElementRef } from "@angular/core";

@Component({
    selector: 'my-app',
    template: `
                <div class="container">
                <div style="float: left">
                    <button (click)="scrollLeft()">left</button>
                </div>

                <div #widgetsContent class="middle">
                    <div class="info-widget">
                    WIDGET
                    </div>
                    <div class="info-widget">
                    WIDGET
                    </div>
                    <div class="info-widget">
                    WIDGET
                    </div>
                    <div class="info-widget">
                    WIDGET
                    </div>
                    <div class="info-widget">
                    WIDGET
                    </div>
                    <div class="info-widget">
                    WIDGET
                    </div>
                </div>

                <div style="float: right">
                    <button (click)="scrollRight()">right</button>
                </div>
                </div>
            `,
    styles: [`
      .info-widget {
        width: 31.75%;
        border: 1px solid black;
        display: inline-block;
      }

      .middle {
        float: left;
        width: 90%;
        overflow: auto;
        /*will change this to hidden later to deny scolling to user*/
        white-space: nowrap;
      }
            `]
})

export class AppComponent { 

  @ViewChild('widgetsContent', { read: ElementRef }) public widgetsContent: ElementRef<any>;

  public scrollRight(): void {
    this.widgetsContent.nativeElement.scrollTo({ left: (this.widgetsContent.nativeElement.scrollLeft + 150), behavior: 'smooth' });
  }

  public scrollLeft(): void {
    this.widgetsContent.nativeElement.scrollTo({ left: (this.widgetsContent.nativeElement.scrollLeft - 150), behavior: 'smooth' });
  }
}

关于html - 使用angular2上的按钮水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955095/

相关文章:

php - 如何使用 PHP 动态插入 CSS 类?

javascript - 在 div 后面画黑点

javascript - .each 槽 html 里面的变量

html - 将第二个跨度的文本对齐到第一个居中文本的跨度下方

html - 100% 页面高度 w/可滚动列

angular - --ng build --env=prod 不工作

javascript - 悬停时仅显示具有公共(public)类的子元素

jquery - Div 高度自动不调整大小?

angular - Angular Protractor 测试的异步性质与等待

javascript - Angular 模块/组件 - 单独显示以及在另一个模块/组件内显示?