繁体   English   中英

CSS Media Query和Javascript / jQuery不匹配

[英]CSS Media Query and Javascript/jQuery don't match up

在我的CSS中,我有一个像这样的媒体查询:

@media (min-width: 800px) { /* styles */ }

然后在我的jQuery中,我瞄准窗口宽度并执行一些操作。

编辑:根据下面的答案,我已经改变了这个功能,但我的JS和CSS仍然没有对齐。 通过使用接受的答案中指定的Modernizr函数来解决该问题。

$(window).resize(function() {
    var viewportWidth = $(window).width();
    if (viewportWidth >= 800) {
        // do something
    }
});

问题是,当jQuery在800px或更高时执行时,CSS正在以740px开始。

这些不对齐是否存在已知问题? 或者我的页面上是否会有影响CSS的内容以及为什么它是740px而不是800px? 也许我应该使用其他东西而不是$(window)

编辑:我已经在Safari中测试过它完美无缺。 在Chrome和Firefox中,jQuery函数可以在800px上运行,CSS也是如此。 但是在Chrome中, CSS实际上是在740px之后运行,即使媒体查询是800px - 我怎样才能让它们完美对齐?

您可以使用Modernizr在JS中执行媒体查询mq()方法将返回一个布尔值):

$(window).resize(function() {
    if (Modernizr.mq('(min-width: 800px)')) {
        // do something
    }
});

移动宽度检查,否则viewportWidth变量将始终是相同的:

$(window).resize(function() {
    var viewportWidth = $(this).width();
    if (viewportWidth >= 800) {
        // do something
    }
});

有效代码是:

$(window).resize(function() {

    var viewportWidth = $(window).width();

    if (viewportWidth >= 800) {
        // do something
    }
});

每次调整窗口大小时,新值都将存储在viewportWidth变量中。 在您的代码中, viewportWidth在加载页面时获取$(window).width()的唯一值。

我刚试过的,似乎工作,是使用CSS媒体查询来设置对象的样式,然后使用javascript来测试对象是否具有该样式。 Javascript问CSS是什么答案,而不是让页面的两个部分单独确定它:

CSS:

@media (min-width: 800px) {  
    #viewType {width:3px;}
}

HTML:

<div id="viewType" style="display:none"></div>

JavaScript的:

var answer = ($("#viewType").width()==3)

我同意史蒂夫的回答。 jquery(window).width(); 是与媒体查询不匹配,甚至不提供准确的窗口宽度大小。 这是我从史蒂夫那里得到的答案和修改。

CSS :
        @media (max-width: 767px) {

           //define your class value, anything make sure it won't affect your layout styling
           .open {
            min-width: 1px !important;
           }
        } 

        .open {
              min-width: 2px;
        }

Js:

// when re-sizing the browser it will keep looking for the min-width size, if the media query is invoked the min-width size will be change.

$(window).on('resize orientation', function() {

    var media = $('.open').css('min-width');

    if( media == '1px') // means < 767px 
    {       
        // do your stuff
    }

});

就是这样〜希望它有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM