[英]Swiper.js thumbs in Angular app synced prev & next
So I am using Swiper.js for a multi-layered carousel on angular app.所以我在 angular 应用程序上使用Swiper.js进行多层轮播。 Essentially there was three
swiper-containers
, who's functionalities are supposed to complement each other.本质上是三个
swiper-containers
,它们的功能应该是相互补充的。 It is an extention of their Swiper thumbs gallery , where I added an extra crousel with description to the images.这是他们的Swiper thumbs Gallery的扩展,我在其中添加了一个额外的 crosel,并为图像添加了描述。
Issues:问题:
Below is the component html:下面是 html 组件:
<section class="gallery-section"> <div class="gallery-left"> <div class="swiper-container gallery-text"> <div class="swiper-wrapper"> <div class="swiper-slide" *ngFor="let image of imageArray; let i = index"> <div class="image-controls"> <div class="swiper-button-prev swiper-button-mobile"></div> <div class="swiper-pagination swiper-pagination-mobile"></div> <div class="swiper-button-next swiper-button-mobile"></div> </div> <div class="image-info"> <div class="image-description">{{ image.description }}</div> <div class="image-date">{{ image.date }}</div> </div> </div> </div> </div> <div class="swiper-container gallery-thumbs"> <div class="swiper-wrapper"> <div class="swiper-slide" *ngFor="let image of imageArray; let i = index"> <figure> <img src="{{ image.img }}" alt=""> </figure> </div> </div> </div> <div class="swiper-button-next swiper-button-desktop"></div> <div class="swiper-button-prev swiper-button-desktop"></div> <div class="swiper-pagination swiper-pagination-desktop"></div> </div> <div class="gallery-right"> <div class="swiper-container gallery-main"> <div class="swiper-wrapper"> <div class="swiper-slide" *ngFor="let image of imageArray"> <figure> <img src="{{ image.img }}" alt=""> </figure> </div> </div> </div> </div> </section>
Here is initialisation from the ts file:这是 ts 文件的初始化:
ngOnInit() { imagesLoaded(document.querySelector('.gallery-section'), function(instance) { console.log('Images loaded > swiper start'); var galleryThumbs = new Swiper('.gallery-thumbs', { spaceBetween: 5, slidesPerView: 3, freeMode: true, pagination: { el: '.swiper-pagination', type: 'fraction', }, watchSlidesVisibility: true, watchSlidesProgress: true }); var galleryText = new Swiper('.gallery-text', { slidesPerView: 1, thumbs: { swiper: galleryThumbs, }, effect: 'fade', fadeEffect: { crossFade: true }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', } }); var galleryMain = new Swiper('.gallery-main', { spaceBetween: 5, slidesPerView: 1, thumbs: { swiper: galleryThumbs }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', } }); }); }
Finally, a GIF which will hopefully make my issue easier to understand.最后,一个 GIF 希望能让我的问题更容易理解。
Figured it out:弄清楚了:
ngOnInit() { imagesLoaded(document.querySelector('.gallery-section'), function(instance) { console.log('Images loaded > swiper start'); var galleryThumbs = new Swiper('.gallery-thumbs', { spaceBetween: 5, slidesPerView: 3, watchSlidesVisibility: true, watchSlidesProgress: true, }); var galleryText = new Swiper('.gallery-text', { slidesPerView: 1, effect: 'fade', fadeEffect: { crossFade: true }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', } }); var galleryMain = new Swiper('.gallery-main', { spaceBetween: 5, slidesPerView: 1, pagination: { el: '.swiper-pagination', type: 'fraction' }, thumbs: { swiper: galleryThumbs } }); galleryText.controller.control = galleryMain; galleryMain.controller.control = galleryText; }); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.