jquery 仅在移动的屏幕大小上使用slick.js

w1jd8yoj  于 2023-06-05  发布在  jQuery
关注(0)|答案(8)|浏览(166)

我只希望slick.js插件在移动的屏幕大小时处于活动状态,比如说在450px以下。我希望这发生在页面加载或浏览器调整大小。如果我加载页面或调整大小到正确的宽度,Slick.js可以正常工作,但如果我将浏览器调整为大于450px,则无法正常工作。这能做到吗?

$(document).ready(function(){
    $(window).resize(function(){
      if($(window).width() < 450) {
        $('.round-card-slick').slick({
        });
      } else {
        $('.round-card-slick').unslick();
      }
    });
  });
kmbjn2e3

kmbjn2e31#

顺便说一句,现在你可以直接在光滑的响应设置对象中这样做

mobileFirst: true, 
responsive: [
   {
      breakpoint: 480,
      settings: "unslick"
   }
]
83qze16e

83qze16e2#

问题是unslick在调整大小时仍然会触发,即使在它被unslicked之后,这反过来又会破坏它。我的同事想出的一个办法是这样的。

var target = $('.slick-mobile-gallery');
if(target.hasClass('slick-initialized'))
  target.unslick();

更新

解决方案是slick插件中的内置功能& @James Daly的答案是这个问题的真实答案。

avwztpqn

avwztpqn3#

我会这么做https://codepen.io/DriftwoodJP/pen/exxgxK

var init = {
  autoplay: true,
  infinite: true,
  cssEase: "linear",
  slidesToShow: 1,
  slidesToScroll: 1 };

$(function () {
  var win = $(window);
  var slider = $(".slider");

  win.on("load resize", function () {
    if (win.width() < 576) {
      slider.not(".slick-initialized").slick(init);
    } else if (slider.hasClass("slick-initialized")) {
      slider.slick("unslick");
    }
  });
});
olmpazwi

olmpazwi4#

您的问题是,该函数没有在页面加载时运行,因为它只设置为在窗口大小调整时调用。

$(document).ready(function () {
  var $window = $(window)
    , $card = $('.round-card-slick')
    , toggleSlick;

  toggleSlick = function () {
    if ($window.width() < 450) {
      $card.slick();
    } else {
      $card.unslick();
    }
  }

  $window.resize(toggleSlick);
  toggleSlick();
});

为了更进一步,调整窗口大小将是一个非常好的主意。调整回调大小,以便toggleSlick每500ms左右被调用一次。

soat7uwm

soat7uwm5#

我发现由于某种原因,当我设置了mobileFirst: true时,它的工作原理与我预期的相反。以下是我的工作(只在移动的上显示滑块)

mobileFirst: true 
responsive: [
            {
                breakpoint: 2000,
                settings: "unslick"
            },
            {
                breakpoint: 1600,
                settings: "unslick"
            },
            {
                breakpoint: 1024,
                settings: "unslick"
            },
            {
                breakpoint: 600,
                settings: "unslick"
            },
            {
                breakpoint: 480,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1
                }
            } ```
ovfsdjhp

ovfsdjhp6#

你可以用这个代码

$(document).ready(function(){
$(window).resize(function(){
  if($(window).width() < 450) {
    $('.round-card-slick').slick({
    });
  } else {
    $('.round-card-slick').slick('unslick');
  }
});

});

s4n0splo

s4n0splo7#

在选项中设置一个断点为unslick滑块,然后在调整大小时(有一个超时以停止触发加载),如果它还没有初始化,则再次光滑它`

const options = {
    mobileFirst: true, 
    responsive: [
        {
            breakpoint: 450,
            settings: "unslick"
        }
    ]
};

var slicky = $('some-slick-widget');
slicky.slick(options);

$(window).resize(function () {

    setTimeout(function () {
           
        if($(window).width() < 450 && ! slicky.hasClass("slick-initialized")) {
            slicky.slick(options);
        }
    }, 100);
});
kb5ga3dv

kb5ga3dv8#

匹配媒体🤘

if (window.matchMedia("(max-width: 767px)").matches) {
  /* the viewport is less than 768 pixels wide */
  $('.slider').slick();
}

相关问题