如果视口宽度大于1000px,则仅运行WayPoints?

问题描述 投票:0回答:2

当视口大于某个宽度时,有没有办法只运行WayPoints?最好在调整大小时检查宽度是否会改变?

通常我会离开这个,但我有4个部分,当他们进入视图我添加了一类.in-view给他们所以我可以动画内部的div。问题是(我认为)在移动设备上我的部分以幻灯片形式(光滑滑块)显示,所以我在.slick-current上有相同的动画/过渡样式,有时它们不起作用,这可能是因为它将元素设置为.in-view仍然?

这是我正在使用的代码:

$(document).ready(function(){
    var waypoints = document.querySelectorAll('.showcase__item');
    for (var i = waypoints.length - 1; i >= 0; i--) {
        var waypoint = new Waypoint({
            element: waypoints[i],
            handler: function(direction) {
                this.element.classList.toggle('in-view');
            },
            offset: '60%',
        });
    }
});

这可能吗......这是一个好主意吗?不确定这对性能有多大的压力?

javascript jquery css jquery-waypoints slick-slider
2个回答
1
投票

我真的不知道这个插件但是有可能使用window.matchMedia().addListener()方法,它会比绑定到窗口调整大小事件更好。然后你可以启用/禁用waypoint插件。顺便说一句,你应该使用jQuery的方式初始化插件。

以下代码尚未经过测试:

var widthMatch = window.matchMedia("(min-width:1000px)");
var waypoints;

widthMatch.addListener(function(e) {
  switchWayPoints(e.matches);
});

function switchWayPoints(enable) {
  waypoints[enable ? "enableAll" : "disableAll"]();
}

$(document).ready(function() {
  waypoints = $('.showcase__item').waypoint(function(direction) {
    // -> Seem strange to call it here without any direction check?! ->$(this).toggleClass('in-view');
  }, {
    offset: '60%'
  });

  switchWayPoints(widthMatch.matches);
});

0
投票

你可以查看$(window).resize()$(window).width();。当浏览器窗口的大小改变并且$(window).resize()获得窗口的当前宽度时,$(window).width();事件被发送到window元素。这是代码的片段。

$(document).ready(function(){
    $(window).resize(function () {
        width=$(window).width();
        if (width > 1000){
            var waypoints = document.querySelectorAll('.showcase__item');
            for (var i = waypoints.length - 1; i >= 0; i--) {
                var waypoint = new Waypoint({
                    element: waypoints[i],
                    handler: function(direction) {
                        this.element.classList.toggle('in-view');
                    },
                    offset: '60%',
                });
            }
        } else {
            // Your logic when the screen size is less then 1000 px.
            if ($("#someID").hasClass("classname")) {
                $("#someID").removeClass("classname"); 
            }
        }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.