根据屏幕大小更改bxslider中幻灯片的数量

时间:2013-04-11 13:28:34

标签: jquery responsive-design bxslider

当我的屏幕低于430像素时,我想更改bxslider上的最大幻灯片数。

我可以使用下面的内容,但这似乎有点过分,必须两次声明所有内容。有没有其他人可以想到的方式?

    if ( $(window).width() < 430) {
    var myslider = $('#my-slider').bxSlider({
        ...
        maxSlides       : 1,
    });  
    }

    else {
    var myslider = $('#my-slider').bxSlider({
        ...
        maxSlides       : 4,
    });
    }

3 个答案:

答案 0 :(得分:18)

您可以通过设置maxSlides变量来减少重复次数,而不是重复滑块代码。

var maxSlides,
    width = $(window).width();

if (width < 430) {
    maxSlides = 1;
} else {
    maxSlides = 4;
}

var myslider = $('#my-slider').bxSlider({
    ...
    maxSlides: maxSlides,
});

你可以用ternary operator使它变得更简单,虽然试图过于简洁并不一定有益。

var width = $(window).width();

var myslider = $('#my-slider').bxSlider({
    ...
    maxSlides: (width < 430) ? 1 : 4,
});

答案 1 :(得分:7)

这是一个响应式解决方案,可在您调整窗口大小时动态调整设置:

var slider,
  oBxSettings = { /* Your bxSlider settings */ };

function init() {
  // Set maxSlides depending on window width
  oBxSettings.maxSlides = window.outerWidth < 430 ? 1 : 4;
}

$(document).ready(function() {
  init();
  // Initial bxSlider setup
  slider = $('#my-slider').bxSlider(oBxSettings);
});

$(window).resize(function() {
  // Update bxSlider when window crosses 430px breakpoint
  if ((window.outerWidth<430 && window.prevWidth>=430)
    || (window.outerWidth>=430 && window.prevWidth<430)) {
    init();
    slider.reloadSlider(oBxSettings);
  }
  window.prevWidth = window.outerWidth;
});

答案 2 :(得分:0)

我用jquery这样使用它:

 var windowWidth = $(window).width();  
 var obxSettings = {...};
 slider.bxSlider(obxSettings);

 $(window).resize(function() {
    windowWidth = $(window).width();
    if(windowWidth < 768) {
    obxSettings.minSlides = 2;
    slider.reloadSlider();
 }   
 else {
    obxSettings.minSlides = 3;
    slider.reloadSlider();
 }
 });