BxSlider小屏无限循环问题
BxSlider small screen infinite loop issue
我对 BxSlider 有一个问题,它似乎只影响较小的屏幕尺寸。当我到达第 3 张幻灯片时,它会返回到第 1 张幻灯片(但它不会以无限滚动的方式进行)它向左跳回并完全错过第 4 张幻灯片 - 在较大的屏幕上它会显示预期。
我的代码:
$(function(){
$('.product_slider').bxSlider({
minSlides: 1,
maxSlides: 3,
moveSlides: 1,
slideWidth: 460,
pager: false,
nextSelector: '.right-arrow',
prevSelector: '.left-arrow',
prevText: 'LEFT',
nextText: 'RIGHT'
});
});
HTML:
<ul class="product_slider">
<li><img alt="" src="image1.jpg"></li>
<li><img alt="" src="image2.jpg"></li>
<li><img alt="" src="image3.jpg"></li>
<li><img alt="" src="image4.jpg"></li>
</ul>
<ul>
<li class="left-arrow"></li>
<li class="right-arrow"></li>
</ul>
编辑
我注意到如果我制作 minSlides: 2 然后它不会破坏它似乎只是如果 min slides 设置为 1。
我也 运行 遇到了这个问题,多亏了你的评论,它在 minSlides: 1
时中断了,我只是通过在移动设备上不使用轮播解决了这个问题。
我正在 PHP 中测试移动设备,但如果您担心 window 的大小被调整,您可以使用 jQuery 检查 window 宽度,并在滑块到达断点时重新加载滑块,并省略轮播选项。这是将选项传递给 reloadSlider
方法 http://bxslider.com/examples/reload-slider-settings.
的 bxSlider 示例
我最终选择了断点并使用新选项重新加载滑块。这是一个比我希望的更肮脏的选择,但似乎没有办法解决它。
所以我有 2 个具有中等和以上屏幕尺寸设置的变量,然后是较小的,例如
/* Medium and Above screens */
var largeSlider = {
minSlides: 1,
maxSlides: 3,
moveSlides: 1,
slideWidth: 480,
preloadImages: 'all',
pager: false,
nextSelector: '.right',
prevSelector: '.left',
prevText: 'Prev',
nextText: 'Next'
}
/* Small and below screens */
var smallSlider = {
minSlides: 1,
maxSlides: 1,
moveSlides: 1,
slideWidth: 480,
preloadImages: 'all',
pager: false,
infiniteLoop: false,
hideControlOnEnd: true,
nextSelector: '.right-arrow',
prevSelector: '.left-arrow',
prevText: 'Prev',
nextText: 'Next'
}
然后在大小或方向更改时,如果屏幕宽度较小,我会重新加载滑块,使用:
productSlider.reloadSlider(smallSlider)
然而,这有其自身的缺陷,因为在方向改变时,如果你立即获得宽度,它会记住旋转之前的宽度,所以我不得不将 setTimeOut 设置为 500 毫秒
$(window).on('orientationchange resize', function(){
setTimeout(function(){
var screenWidth = $(window).width();
if(screenWidth >= 600){
var slideSetup = largeSlider;
}
else {
var slideSetup = smallSlider;
}
//reload slider
productSlider.reloadSlider(slideSetup);
}, 500);
});
我对 BxSlider 有一个问题,它似乎只影响较小的屏幕尺寸。当我到达第 3 张幻灯片时,它会返回到第 1 张幻灯片(但它不会以无限滚动的方式进行)它向左跳回并完全错过第 4 张幻灯片 - 在较大的屏幕上它会显示预期。
我的代码:
$(function(){
$('.product_slider').bxSlider({
minSlides: 1,
maxSlides: 3,
moveSlides: 1,
slideWidth: 460,
pager: false,
nextSelector: '.right-arrow',
prevSelector: '.left-arrow',
prevText: 'LEFT',
nextText: 'RIGHT'
});
});
HTML:
<ul class="product_slider">
<li><img alt="" src="image1.jpg"></li>
<li><img alt="" src="image2.jpg"></li>
<li><img alt="" src="image3.jpg"></li>
<li><img alt="" src="image4.jpg"></li>
</ul>
<ul>
<li class="left-arrow"></li>
<li class="right-arrow"></li>
</ul>
编辑 我注意到如果我制作 minSlides: 2 然后它不会破坏它似乎只是如果 min slides 设置为 1。
我也 运行 遇到了这个问题,多亏了你的评论,它在 minSlides: 1
时中断了,我只是通过在移动设备上不使用轮播解决了这个问题。
我正在 PHP 中测试移动设备,但如果您担心 window 的大小被调整,您可以使用 jQuery 检查 window 宽度,并在滑块到达断点时重新加载滑块,并省略轮播选项。这是将选项传递给 reloadSlider
方法 http://bxslider.com/examples/reload-slider-settings.
我最终选择了断点并使用新选项重新加载滑块。这是一个比我希望的更肮脏的选择,但似乎没有办法解决它。
所以我有 2 个具有中等和以上屏幕尺寸设置的变量,然后是较小的,例如
/* Medium and Above screens */
var largeSlider = {
minSlides: 1,
maxSlides: 3,
moveSlides: 1,
slideWidth: 480,
preloadImages: 'all',
pager: false,
nextSelector: '.right',
prevSelector: '.left',
prevText: 'Prev',
nextText: 'Next'
}
/* Small and below screens */
var smallSlider = {
minSlides: 1,
maxSlides: 1,
moveSlides: 1,
slideWidth: 480,
preloadImages: 'all',
pager: false,
infiniteLoop: false,
hideControlOnEnd: true,
nextSelector: '.right-arrow',
prevSelector: '.left-arrow',
prevText: 'Prev',
nextText: 'Next'
}
然后在大小或方向更改时,如果屏幕宽度较小,我会重新加载滑块,使用:
productSlider.reloadSlider(smallSlider)
然而,这有其自身的缺陷,因为在方向改变时,如果你立即获得宽度,它会记住旋转之前的宽度,所以我不得不将 setTimeOut 设置为 500 毫秒
$(window).on('orientationchange resize', function(){
setTimeout(function(){
var screenWidth = $(window).width();
if(screenWidth >= 600){
var slideSetup = largeSlider;
}
else {
var slideSetup = smallSlider;
}
//reload slider
productSlider.reloadSlider(slideSetup);
}, 500);
});