当没有内容显示在角度6中时,如何停止滚动?

时间:2018-12-18 10:33:28

标签: javascript html css angular typescript

我正在制作Angle 6应用程序,其中我正在制作具有以下内容的可滚动divs

HTML:

<button class="lefty paddle" id="left-button"> PREVIOUS </button>
  <div class="container">
    <div class="inner" style="background:red"></div>
    <div class="inner" style="background:green"></div>
    <div class="inner" style="background:blue"></div>
    <div class="inner" style="background:yellow"></div>
    <div class="inner" style="background:orange"></div>
  </div>
<button class="righty paddle" id="right-button"> NEXT </button>

TS:

  ngOnInit() {
    const container = document.querySelector(".container");
const lefty = document.querySelector(".lefty");
let translate = 0;

lefty.addEventListener("click", function() {
    translate += 200;
    container.style.transform = "translateX(" + translate + "px" + ")";
});

const righty = document.querySelector(".righty");
righty.addEventListener("click", function() {
    translate -= 200;
    container.style.transform = "translateX(" + translate + "px" + ")";
});
  }

工作中的Stblblitz: https://stackblitz.com/edit/angular-mncf26

在此工作演示中,您可以看到有一个下一个和上一个按钮,它们可以根据单击将200px左右转换。

在这里,即使没有内容,单击还是向左或向右单击,都在向200px的任一侧滚动。.

如果没有要显示的内容,如何停止滚动?

1 个答案:

答案 0 :(得分:1)

这很棘手,因为您正在反向移动容器,因此必须使用变量的负值。

我做了一个quick stackblitz来表明这一点(抱歉,我做了一些更改以简化代码),告诉我这是否是您想要的:

<button class="lefty paddle" 
  (click)="translateValue = translateValue + 200" 
  [disabled]="-translateValue <= 0"> PREVIOUS </button>

  <div class="container" #container [ngStyle]="getStyle">
    <div class="inner" *ngFor="let item of elements" [style.background]="item" #items></div>
  </div>

<button class="righty paddle" 
  (click)="translateValue = translateValue - 200"
  [disabled]="-translateValue >= container.offsetWidth"> NEXT </button>