Я делаю приложение 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>
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" + ")";
});
}
Рабочий Stckblitz:https://stackblitz.com/edit/angular-mncf26
В этой рабочей демонстрации вы можете видеть, что есть следующая и предыдущая кнопки, которые переводят 200px
вправо или влево в зависимости от щелчка.
Здесь, если щелчок был сделан либо влево, либо вправо, даже если нет контента, он прокручивает 200px
в любую сторону ..
Как остановить прокрутку, если нет содержимого для отображения?
используйте переменную для отслеживания смещения, демонстрация stackblitz.com/edit/angular-ptxrq7
@ABOS, Yikes! The page you requested couldn't be found.
..
Это сложно, потому что вы перемещаете контейнер в обратном направлении, поэтому вам нужно играть с отрицательными значениями ваших переменных.
Я сделал быстрый стек, показывающий это (и я немного изменил ваш код, чтобы упростить его, извините), скажите мне, хотите ли вы этого:
<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>
Не знаю насчет того, кто проголосовал против. Даже мой код был отредактирован, это временно решает мою проблему .. Спасибо за ваше время и помощь .. Сделал за вас голос за вас ..
Перед преобразованием проверьте новое значение перевода. Если ниже нуля. вернуть ноль. Если он больше, то container.offsetWidth вернет container.offsetWidth.