如何在IE8中应用2个媒体查询并回复JS?

问题描述:

所有的代码在IE9 +中都能正常工作。如何在IE8中应用2个媒体查询并回复JS?

此使用respond.js工作在IE8:

@media 
(-webkit-min-device-pixel-ratio: 2), 
(min-resolution: 192dpi) { 
    // Code 
} 

这不:

@media (-webkit-min-device-pixel-ratio: 2) and (min-width: 700px), 
(min-resolution: 192dpi) and (min-width: 700px){ 
    // Code 
} 

有谁知道另一种方式来传递媒体查询到IE8?

+0

对不起,我忘了提及我正在使用respond.js。我想这应该是一个JS标记 – alias51

+0

我更新了答案,并提供了像你这样的respond.js问题的链接。希望这可以帮助。 –

好吧,也许我把它全部弄错了,但是你指定了-webkit-stuff 其他宽度查询。

我不相信即将理解-webkit-但可以buggyly理解最小分辨率。

@media (-webkit-min-device-pixel-ratio: 2) and (min-width: 700px), 
(min-resolution: 192dpi) and (min-width: 700px){ 
    // Code 
} 

通过buggyly,我的意思是,我所发现的是不明确的,因为你是使用respond.js,它可能会被迫。我found something on respond.js guihubduplication of this other issue

要只通过媒体查询针对IE8:

@media \0screen { 
    .your-css { background: blue; } 
} 

要排除IE8只使用一个条件注释:因为银河表明

<!--[if !IE 8]> 
    @media queries for all browsers except IE 8 
<![endif]--> 
+0

是不是JS中的回复我需要更新? – alias51

+0

是的,虽然问题在于它正在读取查询,但只有'(min-width)'而不是'(min-device-ratio)'。因此它显示了它不应该显示的内容。你知道一种简单的方法来从查询中解析IE吗? – alias51

出现该问题,IE8的确不承认-webkit-

但是,它并没有完全忽略查询,而是仍然读取并应用min-width查询,从而应用了用于具有更高分辨率的显示的代码。

解决方法是从IE8中排除min-resolution查询。

http://browserhacks.com/为此提供了一个很好的回购协议。我最终使用的代码是:

@media (-webkit-min-device-pixel-ratio: 2) and (min-width: @screen-md-min), 
(min-resolution: 192dpi) and (min-width: @screen-md-min){ 
    :root * > .selector { 
// code 
    } 
} 
+1

不错。另一方面,如果您在查询范围中有许多关于声明的前缀,则它将成为过度维护。如果情况变得如此,请重新考虑有条件的评论。 –