代码之家  ›  专栏  ›  技术社区  ›  Maniraj Murugan

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

  •  0
  • Maniraj Murugan  · 技术社区  · 7 年前

    我正在制作angular 6应用程序,其中我正在制作一个可滚动的div,

    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>
    

      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" + ")";
    });
      }
    

    https://stackblitz.com/edit/angular-mncf26

    在这个工作演示中,你可以看到有下一个和上一个按钮,这将使翻译 200px 按单击键向右或向左。。

    这里,如果单击是在左侧或右侧进行的,即使没有内容,也会滚动 200px 两边。。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   user4676340 user4676340    7 年前

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

    我犯了一个错误 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>