javascript - 根据屏幕尺寸运行脚本

标签 javascript jquery

我尝试仅在屏幕尺寸大于 750px 时运行脚本,如果不是,则脚本不会运行。我尝试编写一些代码来执行此操作,但它仅适用于页面刷新。例如,我的脚本使侧面板 (.link-panel) 在到达 (.footer) 时停止。当我输入屏幕尺寸代码时,当我将屏幕尺寸调整到 750 像素时,它可以工作,但是当我重新调整尺寸时,脚本无法正常工作,需要刷新页面才能再次工作。

jQuery(第一个解决方案)

if ($(window).width() >= 750) {
    var windw = this;
    $.fn.followTo = function(elem) {
        var $this = this,
            $window = $(windw),
            $bumper = $(elem),
            bumperPos = $bumper.offset().top + -40,
            thisHeight = $this.outerHeight(),
            setPosition = function() {
                if ($window.scrollTop() > (bumperPos - thisHeight)) {
                    $this.css({
                        position: 'absolute',
                        top: (bumperPos - thisHeight)
                    });
                } else {
                    $this.css({
                        position: 'fixed',
                        top: 60
                    });
                }
            };
        $window.resize(function() {
            bumperPos = pos.offset().top;
            thisHeight = $this.outerHeight();
            setPosition();
        });
        $window.scroll(setPosition);
        setPosition();
    };

    $('.cover').followTo('.footer');

}

jQuery 第二种解决方案

if ($(".link-panel").css("float") == "left") {
    var windw = this;
    $.fn.followTo = function(elem) {
        var $this = this,
            $window = $(windw),
            $bumper = $(elem),
            bumperPos = $bumper.offset().top + -40,
            thisHeight = $this.outerHeight(),
            setPosition = function() {
                if ($window.scrollTop() > (bumperPos - thisHeight)) {
                    $this.css({
                        position: 'absolute',
                        top: (bumperPos - thisHeight)
                    });
                } else {
                    $this.css({
                        position: 'fixed',
                        top: 60
                    });
                }
            };
        $window.resize(function() {
            bumperPos = pos.offset().top;
            thisHeight = $this.outerHeight();
            setPosition();
        });
        $window.scroll(setPosition);
        setPosition();
    };

    $('.cover').followTo('.footer');

}

我的第二个解决方案仅在 .link-panel 上的 float 属性为 left 时运行脚本。当页面为 750 像素时,我的 float: left 属性在媒体查询中被删除。与上一个解决方案一样,该解决方案仅适用于页面刷新。我怎样才能做到这样,如果用户将大小从 <= 750px 调整到 > 750px 他们不需要刷新页面以使脚本正常工作?

最佳答案

对于第二个选项,放置 if 语句来检查窗口调整大小事件中的 css 属性,例如:

$(window).resize(function(){    
    if($(".link-panel").css("float") == "left"){
        -- Rest of code here --
    }else{
        -- Other option if check is false --
    }
});

(在我看来)这是完成您想要做的事情的最佳方式,因为在响应式网站上工作时,CSS 媒体查询可以变得非常具体。

关于javascript - 根据屏幕尺寸运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40414062/

相关文章:

javascript - 如何获取URL的标题?

javascript - 为什么在 jQuery 中切换可拖动性的正确方法是?

javascript - 如果多个变量为空jquery

javascript - 将信息发布到 2 个区域。 PHP/Javascript

javascript - 使用 jquery 删除重复的行数据

javascript - jQuery 绑定(bind)提交导致问题

javascript - Preloader在线不淡出

javascript - 需要一个标识符,却看到了 '0'

javascript - KnockoutJS 从可观察数组中删除项目。 Item是ul里面的listitem,是foreach生成的

javascript - Twitter Bootstrap Carousel - 访问当前索引