2011-03-28 91 views
13

在JavaScript中是否有一种直接的方式(不涉及解析CSS代码)来确定哪些媒体查询是活动的?CSS确定活动媒体查询

比如我有两个疑问:

@media screen and (max-width:800px) 

@media screen and (min-width:801px) 

没有解析和看clientWidth,我怎么能分出哪个其中之一已经评估为true。

+2

检查计算样式。 – BoltClock 2011-03-28 14:09:28

+0

是的,我可以做到这一点,但假设我有一个元素来计算。我试图根据媒体查询填写数据,但我还没有到位的元素,并且在某些元素中加入了一些虚假数据来做出此决定似乎很“黑客”。 – freddylindstrom 2011-03-28 15:57:55

+0

当某个宽度(作为临时度量)被触发时,您可以将某个容器/ DIV的背景/边框设置为鲜红色? – Dan 2011-04-07 05:15:16

回答

0

我不知道你怎么知道哪些媒体查询是积极的,但是......

...你就不能检查与JavaScript屏幕宽度?

if (window.innerWidth >= 801) { 
    // @media screen and (min-width:801px) 
} else { 
    // @media screen and (max-width:800px 
} 

或者,我在这里失踪了什么?

+0

哦,只是看到_without解析,并看着clientWidth,_,对不起 – 2016-02-09 03:06:05

4

尽管这是一个古老的问题,但它在搜索这个问题时排名很高。

Window.matchMedia是官方的,并且由all major browsers(IE10 +)支持,并允许您查询某个媒体查询是否当前匹配。

从原来的问题:

if (window.matchMedia('screen and (max-width:800px)').matches) { 
    // it matches 
} else { 
    // does not match 
} 

您还可以侦听当一个事件监听器连接到MediaQueryListwindow.matchMedia返回查询比赛结果的变化:

var mql = window.matchMedia('screen and (max-width:800px)'); 
mql.addEventListener(
    function(mq) { 
     if (mq.matches) { 
      // it matches 
     } else { 
      // does not match 
     } 
    } 
);