根据屏幕大小用jQuery替换样式表

use*_*582 5 javascript jquery screen-size

嗨,我想知道是否有人可以提供帮助,我正在尝试使用jQuery创建一个响应式网站(必须这样做,因为目标受众是在IE7/8和css3-mediaqueries.js似乎干扰我的jQuery UI我也用).我使用以下脚本来检测宽度和高度并相应地应用样式,它适用于宽度而不是高度,它加载SMstyle.css然后用style.css覆盖.我正在尝试学习JavaScript,但目前还没有超强,我知道有一个更简单的方法!任何帮助,将不胜感激...

function adjustStyle(width) {
        width = parseInt(width);
        if ((width >= 701) && (width < 1200
        )) {
            $("#size-stylesheet").attr("href", "css/SMstyle.css");
        } else {
            $("#size-stylesheet").attr("href", "css/style.css");
        }
    }

    $(function() {
        adjustStyle($(this).width());
        $(window).resize(function() {
            adjustStyle($(this).width());
        });
    });

    function adjustStyle(height) {
        height = parseInt(height);
        if (height < 800
        ) {
            $("#size-stylesheet").attr("href", "css/SMstyle.css");
        } else {
            $("#size-stylesheet").attr("href", "css/style.css");
        }
    }

    $(function() {
        adjustStyle($(this).height());
        $(window).resize(function() {
            adjustStyle($(this).height());
        });

    });
Run Code Online (Sandbox Code Playgroud)

ant*_*ila 1

在处理响应式布局时,您并不真正关心高度。整个概念是,如果内容不能适应宽度,它就会折叠(从而增加高度)。

编辑:

我相信您需要使用 $(document) 而不是 $(this),因为当您手动触发它和由调整大小事件触发它时, $(this) 的范围会有所不同。

function adjustStyle() {
    var width = $(document).width();
    var height = $(document).height();
    if (((width >= 701) && (width < 1200)) || (height < 800)) {
        $("#size-stylesheet").attr("href", "css/SMstyle.css");
    } else {
        $("#size-stylesheet").attr("href", "css/style.css");
    }
}

adjustStyle();
$(window).resize(function() {
    adjustStyle();
});
Run Code Online (Sandbox Code Playgroud)

要查看不同的范围,请尝试以下操作:

$(function() {
    console.log('Scope', $(this)); // Scope is DOM-element
    $(window).resize(function() {
        console.log('Scope', $(this)); // Scope is Window object.
    });
});
Run Code Online (Sandbox Code Playgroud)