Ser*_*dez 10 html css typescript angular
所以我在angular2中有这个应用程序,我需要水平滚动组件,但左右按钮.所以我需要一个功能,每个按钮滚动到右边或左边的内容.我需要这样的东西:

我尝试过使用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>
Run Code Online (Sandbox Code Playgroud)
这是我的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;
}
Run Code Online (Sandbox Code Playgroud)
那么,如何左右滚动按钮呢?请帮忙.
H.A*_*ani 16
导入ViewChild和ElementRef以获取elemenet参考.
使用#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' });
}
}
Run Code Online (Sandbox Code Playgroud)
考虑以下解决方案
在 .html 中
<div #widgetsContent class="custom-slider-main">
<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>
Run Code Online (Sandbox Code Playgroud)
在.scss中
.custom-slider-main{
display: flex;
overflow: hidden;
scroll-behavior: smooth;
}
Run Code Online (Sandbox Code Playgroud)
在 .ts 中
@ViewChild('widgetsContent') widgetsContent: ElementRef;
Run Code Online (Sandbox Code Playgroud)
单击左/右按钮可使用以下功能
scrollLeft(){
this.widgetsContent.nativeElement.scrollLeft -= 150;
}
scrollRight(){
this.widgetsContent.nativeElement.scrollLeft += 150;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7230 次 |
| 最近记录: |