我试图改变一些交互内容在不同屏幕大小上的处理方式。在小屏幕上,这个内容应该使用光滑的旋转木马显示。
$(window).resize(function() {
    if($(window).width() <= 845) {
        $(".content").slick({
            centerMode: true,
            slidesToShow: 1
        });
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
    }
});这会导致每当窗口调整到低于845的宽度时都会调用slick,这会导致问题。我尝试使用one(),但这不允许调整845以上的大小,然后再后退。
如果用户调整到低于845的大小,那么Slick将被调用一次,如果窗口再次调整大小并满足<= 845条件,则不会再次调用Slick。
谢谢
发布于 2017-02-08 18:10:05
一种选择是使用变量来控制光滑的行为。本质上,当您第一次运行光滑时,您将变量设置为true。你用这个变量作为检查的一部分来调用slick。
var runSlick = true
$(window).resize(function() {
    if($(window).width() <= 845 && runSlick) {
        $(".content").slick({
            centerMode: true,
            slidesToShow: 1
        });
        runSlick = false;
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
        runSlick = true;
    }
});发布于 2017-02-09 05:54:51
你可以用这个:
var isResizedOnce = false;
$(window).resize(function() {
    if($(window).width() <= 845) {
        if(!(isResizedOnce)){
            $(".content").slick({
                centerMode: true,
                slidesToShow: 1
            });
        }
        else{
            isResizedOnce = true;
        }
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
    }
});在这段代码中,我使用的是标志isResizedOnce,一旦窗口的大小调整到845以下,该标志就会被设置为true,并在此基础上执行操作。
https://stackoverflow.com/questions/42120463
复制相似问题