当前位置: 首页 > 面试题库 >

CSS媒体查询和JavaScript窗口宽度不匹配

容修贤
2023-03-14
问题内容

对于响应式模板,我在CSS中有一个媒体查询:

@media screen and (max-width: 960px) {
 body{
 /*  something */
 background:red;
 }
}

而且,我在调整大小以记录宽度时做了一个jQuery函数:

$(window).resize(function() {
 console.log($(window).width());
 console.log($(document).width()); /* same result */
 /* something for my js navigation */
}

而且CSS检测和JS结果有所不同,我有这个meta:

<meta content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width" name="viewport"/>

我想这是由于滚动条(15像素)所致。我该如何做得更好?


问题答案:

您对滚动条是正确的,这是因为CSS使用的是设备宽度,而JS使用的是文档宽度。

您需要做的是在JS代码中测量视口宽度,而不是使用jQuery width函数。

function viewport() {
    var e = window, a = 'inner';
    if (!('innerWidth' in window )) {
        a = 'client';
        e = document.documentElement || document.body;
    }
    return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };
}


 类似资料:
  • 问题内容: 我正在考虑响应式网页设计和“移动优先”方法来重新设计我的博客-简而言之,我正在尝试使用最小宽度来避免任何形式的复制或CSS。 我的问题是,当我确实需要覆盖CSS值时,较低的最小宽度优先。例: 我希望当我在600px及更高的分辨率下会得到2.2em h2,而我会得到1.7em。这没有道理! 我可以继续使用最小宽度并在不使用更强大的选择器或最大宽度的情况下有效地覆盖更高分辨率的声明吗? 问

  • 问题内容: 编写CSS媒体查询时,有什么方法可以使用“或”逻辑指定多个条件? 我正在尝试做这样的事情: 问题答案: 使用逗号指定两个(或多个)不同的规则: 从https://developer.mozilla.org/en/CSS/Media_queries/ …此外,您可以在逗号分隔的列表中组合多个媒体查询;如果列表中的任何媒体查询为true,则将应用关联的样式表。这等效于逻辑“或”运算。

  • 我已经尝试了几个小时来解决这个问题,我正在努力,不管我做什么,它拒绝在我添加max-width或min-width的瞬间调用媒体标记中的CSS。为了测试,我让media标记使主体变红,并将min-width降低到可笑的低。什么都没发生。如果我留下屏幕标记而不留下任何其他东西,它就会调用它 CSS: HTML: 请原谅代码的绝对混乱,但我还没来得及清理这个问题,就在我对这个问题失去理智之前。

  • 主要内容:1. 媒体类型,2. 媒体特性,3. 逻辑操作符,4. 定义媒体查询随着移动设备的快速普及,用户不再只是通过传统的电脑系来浏览 Web 内容,越来越多的用户开始使用各种尺寸的智能手机、平板电脑或者其它设备来浏览 Web 内容,为了确保使用不同设备的用户都能拥有不错的体验就需要用到媒体查询。 媒体查询是 CSS 样式表最重要的功能之一,所谓媒体查询指的就是根据不同的媒体类型(设备类型)和条件来区分各种设备(例如:电脑、手机、平板电脑、盲文设备等),并为它们分别定义不

  • 问题内容: 我对媒体查询世界还很陌生,很明显,宽度和设备宽度之间的差异让我遗漏了一些基本知识,除了它们明显的定位能力之外。 我想同时针对具有相同断点的常规计算机和设备,因此我只将所有最小和最大宽度查询都复制到了最小设备和最大设备宽度查询中。无论出于何种原因,当我添加- device对应项时,常规计算机对CSS的解释都大不相同,因此我不确定自己做错了什么。 您可以在这里看到效果(这是应该的样子) 此

  • 我正在尝试使用CSS3媒体查询来制作一个只在宽度大于400px小于900px时才出现的类。我知道这很可能是极其简单的和我正在错过一些明显的东西,但我无法弄明白。我想出的是下面的代码,感谢任何帮助。