javascript - 事件元素应该在 Owl Carousel 的中间

标签 javascript jquery css owl-carousel

我的 owl-carousel 有问题。一切正常,但事件元素是页面上的第一个而不是中间的元素(彩色是事件元素)。您可以在以下屏幕截图中看到这一点。

Screenshot of owl-caousel

我希望中间项始终是事件项。

我的 JQuery 代码:

jQuery(".owl-carousel").owlCarousel({
    items:3,      
    loop:true,
    nav:true,
    responsive:{
        0:{
            items:1,
            stagePadding: 450
        },
        600:{
            items:1,
            stagePadding: 450
        },
        1000:{
            items:1,
            stagePadding: 450
        }
    }
});

我发现了类似的东西,但它不起作用:

jQuery(".owl-carousel").owlCarousel({
    items:3,      
    loop:true,
    nav:true,

// THIS IS THE NEW PART
    afterAction: function(el){
        //remove class active
        this
        .$owlItems
        .removeClass('active')
        //add class active
        this
        .$owlItems //owl internal $ object containing items
        .eq(this.currentItem + 1)
        .addClass('active')
        }
// END NEW PART

    responsive:{
        0:{
            items:1,
            stagePadding: 450
        },
        600:{
            items:1,
            stagePadding: 450
        },
        1000:{
            items:1,
            stagePadding: 450
        }
    }
});

最佳答案

Owl Carousel 将 .active 类添加到所有可见项,而不仅仅是其中一个。

但是当你使用 the center option ,只有中心项获得 .center 类。

看看这个演示:https://codepen.io/glebkema/pen/Xjryjd

$('.owl-carousel').owlCarousel({
  autoplay: true,
  center: true,
  loop: true,
  nav: true,
});
.owl-item.active > div:after {
  content: 'active';
}
.owl-item.center > div:after {
  content: 'center';
}
.owl-item.active.center > div:after {
  content: 'active center';
}
.owl-item > div:after {
  font-family: sans-serif;
  font-size: 24px;
  font-weight: bold;
}
<div class="owl-carousel  owl-theme">
  <div><img src="https://via.placeholder.com/300x200/936/fff/?text=1" alt=""></div>
  <div><img src="https://via.placeholder.com/300x200/693/fff/?text=2" alt=""></div>
  <div><img src="https://via.placeholder.com/300x200/369/fff/?text=3" alt=""></div>
  <div><img src="https://via.placeholder.com/300x200/f63/fff/?text=4" alt=""></div>
</div>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>

PS 你可以简化你的代码。

items:3,
responsive:{
    0:{
        items:1,
        stagePadding: 450
    },
    600:{
        items:1,
        stagePadding: 450
    },
    1000:{
        items:1,
        stagePadding: 450
    }

相当于

items:1,
stagePadding: 450,

PPS。 450 对于 the stagePadding option 来说是一个非常大的数字在窄屏幕上。

关于javascript - 事件元素应该在 Owl Carousel 的中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388182/

相关文章:

javascript - 来自 jQuery,如何在 React.js 中制作 DOM 动画?比如动画进度条?

javascript - Qualtrics - 隐藏某些组的语言栏或根据响应设置语言

javascript - 如何设置带有单选图标后缀文本的单选按钮列表?

javascript - CSS - 防止文本在调整大小时移动

javascript - 从大列表中选择特定链接

html - 为什么增加 div 的高度会使 div 向下移动?

Google 云端硬盘中的 CSS 样式表不再有效

javascript - 节点 x 和 y 是否自动设置在强制布局图中?

javascript - 向其添加 img 时 Div 改变大小

javascript - 如何访问不同的 iframe?