私の目標は、次のようなカルーセルを作成することです。
何を見ているのかわからない場合は、5つの画像/アイテムがありますが、中央の1つだけがフルサイズで表示されます。中央の隣の画像は小さく、外側の画像はさらに小さくなっています。
私はフクロウカルーセルの最初のバージョンでこれを達成しましたが、ループをサポートしていないため、このデザインはばかげています(側面の画像に到達できません...)。
これが私がそれをした方法です:
var owl = $("#owl-demo");
owl.owlCarousel({
pagination: false,
lazyLoad: true,
itemsCustom: [
[0, 3],
[900, 5],
[1400, 7],
],
afterAction: function(el){
.$owlItems
.removeClass('active') //what I call the center class
.removeClass('passive') //what I call the next-to-center class
this
.$owlItems
.eq(this.currentItem + 2) //+ 2 is the center with 5 items
.addClass('active')
this
.$owlItems
.eq(this.currentItem + 1)
.addClass('passive')
this
.$owlItems
.eq(this.currentItem + 3)
.addClass('passive')
}
5つの項目のコードを示しているだけですが、3と7でも機能させるためにいくつかのif句を使用しました。 active
クラスは、width: 100%
とpassive
1つのwidth: 80%
で構成されています。
フクロウカルーセル2で同じ結果を得る方法を知っている人はいますか? _items
の代わりに$owlItems
を使用していますが、それが正しいかどうかわかりません。 afterAction
はなく、イベント/コールバックはv2で正常に機能していないようです。
あなたはこのようにそれを行うことができます:
$(function(){
$('.loop').owlCarousel({
center: true,
items:5,
loop:true,
margin:10
});
$('.loop').on('translate.owl.carousel', function(e){
idx = e.item.index;
$('.owl-item.big').removeClass('big');
$('.owl-item.medium').removeClass('medium');
$('.owl-item').eq(idx).addClass('big');
$('.owl-item').eq(idx-1).addClass('medium');
$('.owl-item').eq(idx+1).addClass('medium');
});
});
お好みのイベントを聞く
デモでは、クラスbigをメインアイテムに追加し、クラスmedium前と次のものに。そこから、好きなcssプロパティで遊ぶことができます。
注意:
プラグインクラスで遊ぶこともできます、.active
および.center
(または、ここに表示されているように、独自に定義することもできます: カスタムクラス
これをcssおよびjsファイルに追加します。
.owl-carousel.owl-drag .owl-item.center .item {
background: rgb(25, 0, 255) ;
transform: scale(1.1)
}
$(document).ready(function () {
$(".owl-carousel").owlCarousel({
center: true,
dots: false,
loop:true,
responsive: {
1900: {
items: 7
},
1440: {
items: 5
},
760: {
items: 3
},
0: {
items: 1
}
}
});
});