exhtml
4/20/2017 - 6:06 AM

OwlCarousel2 Synced Carousels (thumbnails + gallery)

OwlCarousel2 Synced Carousels (thumbnails + gallery)

<!-- · · · · · · · ·
	CAROUSEL 1 
-->

<!-- carousel wrapper -->
<div class="slider-gallery-images clearfix">
	<!-- carousel -->
	<div class="owl-carousel owl-theme js-slider-gallery-images">

		<div class="item" data-hash="my-hash-01"><img class="owl-lazy" data-src="https://unsplash.it/1024/600?image=660" alt=""></div>
		<!-- more items ... -->
	</div>
	<!-- /carousel -->

  <!-- nav -->
  <button class="btn goPrev" id="js-slider-gallery-images-prev">
    <i class="icon-chevron-left"></i>
  </button>
  <button class="btn goNext" id="js-slider-gallery-images-next">
    <i class="icon-chevron-right"></i>
  </button>
  <!-- /nav --> 
</div>
<!-- /carousel wrapper -->

<!-- · · · · · · · ·
	CAROUSEL 2 
-->

<!-- carousel wrapper -->
<div class="slider-gallery-thumbs clearfix">
  <!-- carousel -->
  <div class="owl-carousel owl-theme js-slider-gallery-thumbs">

    <div class="item"><img class="img-responsive" src="https://unsplash.it/300/300?image=660"></div>
    <!-- more items ... -->

  </div>
  <!-- /carousel -->
</div>
<!-- /carousel wrapper -->
var gallerySyncedCarouselsFlag = false,
		gallerySyncedCarouselsDuration = 300;

/* · · · · · · · ·
Carousel 1
*/

var sliderGalleryImages = $('.js-slider-gallery-images');
sliderGalleryImages.owlCarousel({
	items:1,  
	//loop: true, //cuidado si lo ponemos a true: infinite: cuidado cuando usemos esta opcion porque 'clonea' los items, y si tenemos elementos que lleven #id, duplica los #id, lo cual es un problema!!! 
	dots: false,
	lazyLoad: true,
	animateOut: 'fadeOut',
	animateIn: 'fadeIn',
	navSpeed: 5000,
	//dotsSpeed: 4000,
	smartSpeed: 500, //velocidad del drag
	addClassActive: true, 
	URLhashListener:true,
	startPosition: 'URLHash'
})
.on('changed.owl.carousel', function (e) {
	if (!gallerySyncedCarouselsFlag) {
		gallerySyncedCarouselsFlag = true;
		sliderGalleryThumbs.trigger('to.owl.carousel', [e.item.index, gallerySyncedCarouselsDuration, true]);
		gallerySyncedCarouselsFlag = false;
	}
});

$("#js-slider-gallery-images-next").click(function(){
	sliderGalleryImages.trigger('next.owl.carousel', [500]); //OJO!!!! LE PASAMOS LA VELOCIDAD A LA QUE TIENE QUE EFECTUAR LOS SLIDES!
});

$("#js-slider-gallery-images-prev").click(function(){
	sliderGalleryImages.trigger('prev.owl.carousel', [500]);
});

/* · · · · · · · ·
Carousel 2
*/

var sliderGalleryThumbs = $('.js-slider-gallery-thumbs');
sliderGalleryThumbs.owlCarousel({

	//loop: true, //cuidado si lo ponemos a true: infinite: cuidado cuando usemos esta opcion porque 'clonea' los items, y si tenemos elementos que lleven #id, duplica los #id, lo cual es un problema!!! 
	//dots: false,
	navSpeed: 5000,
	
	responsive:{
    0:{
			items:3
		},
		600:{
			items:6
		},
		1000:{
			items:9
		}
	},
	
	margin: 8 //separation between slides

})
.on('click', '.owl-item', function () {
	sliderGalleryImages.trigger('to.owl.carousel', [$(this).index(), gallerySyncedCarouselsDuration, true]);

})
.on('changed.owl.carousel', function (e) {
	if (!gallerySyncedCarouselsFlag) {
		gallerySyncedCarouselsFlag = true;		
		sliderGalleryImages.trigger('to.owl.carousel', [e.item.index, gallerySyncedCarouselsDuration, true]);
		gallerySyncedCarouselsFlag = false;
	}
});