Swiper Carousel:如何针对不同的屏幕尺寸为同一个轮播提供不同的属性

时间:2015-07-03 22:18:31

标签: javascript jquery html css swiper

我正在尝试创建一个在桌面上采用4x1布局并在移动设备中采用2x2布局的旋转木马。

这是代码,但它只是打破了旋转木马。

  var swiper1;
$(window).resize(function() {
    var ww = $(window).width();

    if (ww <= 767) {
        swiper1 = new Swiper('#swiper2', {

                slidesPerView: 2,
                slidesPerColumn: 2,
                spaceBetween: 10
            }
        );
    }
    else {
        swiper1 = new Swiper('#swiper2', {

                slidesPerView: 4,
                slidesPerColumn: 1,
                spaceBetween: 30
            }
        );
    }
});

最初的代码只是这个:

var swiper1 = new Swiper('#swiper2', {
                slidesPerView: 4,
                slidesPerColumn: 1,
                spaceBetween: 30
});

这对我有用,但我希望在分辨率<= 767时将其更改为2x2

2 个答案:

答案 0 :(得分:0)

在创建新的Swiper实例之前,您必须先销毁它。在Swiper API Docs中,“方法”部分提供了有关Swiper的destroy方法的信息。在您的情况下,您可以这样称呼它:swiper1.destroy(true, true);

您更新的javascript可能如下所示:

   $(function () {
        createSwiper();

        $(window).resize(function () {
            createSwiper()
        });
    });

    function createSwiper() {
        var swiper1 = $('#swiper2')[0].swiper;
        if (typeof swiper1 !== 'undefined') 
            swiper1.destroy(true, true); //if swiper exists, destroy it so we can create a new one 

        var ww = $(window).width();
        if (ww <= 767) {
            swiper1 = new Swiper('#swiper2', {
                slidesPerView: 2,
                slidesPerColumn: 2,
                spaceBetween: 10
            });
        } else {
            swiper1 = new Swiper('#swiper2', {
                slidesPerView: 4,
                slidesPerColumn: 1,
                spaceBetween: 30
            });
        }
    }

我将create swiper逻辑放在自己的函数中,并在页面加载时调用它并将其附加到window resize事件。

这是一个Fiddle,因此您可以看到它的实际效果(调整框架窗口大小)。

答案 1 :(得分:0)

根据文档,您现在可以使用断点为不同的屏幕尺寸提供不同的参数。由于Swiper Docs没有锚点,因此请在“滑动器参数”部分中搜索“断点”。

您的情况是:

  var swiper1 = new Swiper('#swiper2', {
    slidesPerView: 2,
    slidesPerColumn: 2,
    spaceBetween: 10
    // ...
    breakpoints: {
      // when window width is >= 767px
      767: {
         slidesPerView: 4,
         slidesPerColumn: 1,
         spaceBetween: 30,
      }
    }
  });

注意:文档显示,在断点内,您只能使用一部分参数,不会对轮播的行为产生太大影响。