我正在一个网站上工作,它是一个主题 . 在该网站的主体中构造成具有容纳导航的左侧面板和容纳主体内容的右侧面板 .
当左侧面板从折叠视图(仅显示图标)打开到完整视图(显示导航文本)时,owl-carousel由于在页面加载时加载,因此不会重新调整宽度 .
在their API之后,我尝试了几种尝试重新加载旋转木马的方法,但是没有成功 . 正文没有设置宽度,例如内联样式,而是在左侧菜单打开时设置了类 left-menu-open
.
我还看了几个人试图做同样事情的其他案例,但他们的代码示例都没有用 .
以下是我的代码 . 我在.php文件中运行它,因此我可以在正文内容中加载多个滑块,而不会相关地旋转 . 轮播加载和运行正常,只是如果页面加载导航打开并且关闭导航,它开始剪辑,或者第三张幻灯片显示页面加载导航关闭并打开 .
我尝试过的一种方法是
if ( $( 'body' ).resize() { }
if ( $( 'body' ).hasClass( 'left-nav-open' ) { } else if ( !$( 'body ').resize() { }
(function($) {
$(function() {
var $owl = $('.owl-<?php echo $owl_widget_title; ?>');
$owl.owlCarousel({
// your initial option here, again.
loop:true,
nav:true,
navText: ["<i class=\"fa fa-chevron-left\"></i>","<i class=\"fa fa-chevron-right\"></i>"],
dots: false,
lazyLoad: true,
lazyContent: true,
autoplaySpeed: 1000,
autoplayTimeout: 7000,
autoplayHoverPause: true,
responsive : {
0 : {
items: 1,
slideBy: 1,
autoHeight:true,
},
992 : {
items: <?php echo $num_of_items; ?>,
slideBy: <?php echo $num_of_items; ?>,
}
}
});
});
})(jQuery)
我已经尝试了 destroy.owl.carousel
,然后 initialize.owl.carousel
但这些似乎都没有工作或运行 .
任何和所有帮助表示赞赏!谢谢
4 回答
要在调整容器大小后更新owl,需要在
data
上调用.onResize()
_handler .updateOwl()
函数应如下所示:唯一需要注意的是当 exactly 调用此函数时 . 我假设侧边栏没有跳到位置,而是平滑地动画 . 对
.onResize()
的调用需要延迟动画的持续时间,因此旋转木马的大小是根据最终内容大小计算的 . 通过将updateOwl()
包装到setTimeout()
(等于或稍长于侧边栏动画持续时间)来延迟执行updateOwl()
:...
.sidebarToggle
将成为你的侧边栏开场白 .工作范例:
如果以上内容对您不起作用,我需要查看您的实现以便能够对其进行调试 .
Side note:
lazyContent
目前无法使用 . 根据插件作者:我使用
destroy.owl.carousel
来破坏旋转木马 . 轮播重新初始化单击左侧导航菜单您应该能够通过简单地从DOM中删除元素来完成工作(jquery有一个函数.remove()),然后完全按照第一个那样重新创建 . 请注意,您必须将来自服务器的变量存储在客户端中 .
我建议触发the refresh.owl.carousel event .
我的侧边栏使用转换,所以我需要检测the transitionend event .
我已将
.main
块设置为the responsiveBaseElement . 现在,轮播将调整到其容器的宽度,而不是整个页面的宽度 .我添加了一些跳跃点,使响应式更改更加明显 .
请检查结果 . 这是你想要实现的目标吗?
https://codepen.io/glebkema/pen/zwozRx