Давайте рассмотрим 3 вещи, которые вы хотите сделать по очереди ...
1.Анимировать так, что слайды идут снизу
Для этого вы можете добавить следующий CSS к вашему компоненту, который содержит ngb-carousel
:
::ng-deep .carousel-item {
display: block !important;
position: absolute;
transform: translateY(100%);
opacity: 0;
transition:all 1s;
}
::ng-deep .carousel-item.active {
position: relative;
transform: translateY(0);
opacity: 1;
top: 0;
}
Вы должны быть в состоянии настроитьCSS, пока вы не получите нужную анимацию.
Предупреждение: Angular планирует отказаться от /deep/
, >>>
и ::ng-deep
, однако вы должны иметь возможность использовать::ng-deep
на данный момент:
Пронзающий теневой комбинатор устарел, и поддержка удалена из основных браузеров и инструментов.Таким образом, мы планируем отказаться от поддержки в Angular (для всех 3 of / deep /, >>> и :: ng-deep).До тех пор :: ng-deep следует предпочитать для более широкой совместимости с инструментами.
source: https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep
2.Отключить автоматическую смену слайдов
Установите для свойства interval
ngb-carousel
значение false
- обычно это числовое значение (количество миллисекунд, в течение которого каждый слайд отображается), но его установкаfalse
отключит автоматическое слайд-шоу.
<ngb-carousel *ngIf="images" [interval]="false" #carousel></ngb-carousel>
3.Изменить слайд при прокрутке мыши
Добавьте следующий @HostListener
в ваш компонент.Он прослушивает событие прокрутки мыши и выполняет код в функции scroll()
, когда обнаруживает событие.Приведенный ниже код загружает предыдущий слайд при прокрутке вниз и следующий слайд при прокрутке вверх.Измените event.wheelDelta < 0
на event.wheelDelta > 0
, если хотите наоборот.
@HostListener('mousewheel', ['$event'])
scroll() {
if (event.wheelDelta < 0) {
this.carousel.prev();
} else {
this.carousel.next();
}
}
Чтобы это сработало, вам нужно объявить ngb-carousel
как переменную, чтобы вы могли получить к ней доступ вмашинописный текст для вызова next()
и prev()
:
HTML
<ngb-carousel *ngIf="images" [interval]="false" #carousel>
машинописный текст
@ViewChild('carousel')
carousel: any;
Пожалуйста, смотрите этот StackBlitz для рабочего демо.