IE8支持CSS Media Query

时间:2011-04-24 08:21:29

标签: html css responsive-design internet-explorer-8 media-queries

IE8不支持以下CSS媒体查询:

@import url("desktop.css") screen and (min-width: 768px);

如果没有,那么另一种写作方式是什么? 这在Firefox中运行良好。

以下代码有任何问题吗?

@import url("desktop.css") screen; 
@import url("ipad.css") only screen and (device-width:768px);

11 个答案:

答案 0 :(得分:341)

css3-mediaqueries-js可能就是您要找的内容:此脚本模拟媒体查询。但是(来自脚本的网站)它“不适用于@import ed样式表(出于性能原因你不应该使用它们。)也不会听<link>的媒体属性和<style>元素“。

同样,您可以使用更简单的Respond.js,它只会启用min-widthmax-width媒体查询。

答案 1 :(得分:77)

IE9 之前的Internet Explorer版本不支持媒体查询

如果您正在寻找一种降级 IE8用户设计的方法,您可能会发现IE的条件评论很有帮助。使用此功能,您可以指定一个IE 8/7/6特定样式表,该样式表覆盖了以前的规则。

例如:

<link rel="stylesheet" type="text/css" media="all" href="style.css"/>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ie.css"/>
<![endif]-->

这不允许IE8中的响应式设计,但可能是比使用JS插件更简单,更易于访问的解决方案。

答案 2 :(得分:50)

我发现的最佳解决方案是Respond.js,特别是如果您的主要关注点是确保您的响应式设计在IE8中有效。在min / gzip时,它的重量非常轻,1kb,你可以确保只有IE8客户端加载它:

<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->

如果你使用bootstrap,这也是推荐的方法:http://getbootstrap.com/getting-started/#support-ie8-ie9

答案 3 :(得分:14)

IE8(及更低版本)和3.5之前的Firefox不支持媒体查询。 Safari 3.2部分支持它。

有些解决方法使用JavaScript为这些浏览器添加媒体查询支持。试试这些:

Media Queries jQuery plugin (only deals with max/min width)

css3-mediaqueries-js – a library that aims to add media query support to non-supporting browsers

答案 4 :(得分:11)

取自css3mediaqueries.js项目页面。

注意:不适用于@ import'ed样式表(出于性能原因,您不应该使用它们)。也不会收听<link><style>元素的媒体属性。

答案 5 :(得分:8)

使用css3-mediaqueries-js的一种简单方法是在结束体标记之前包含以下内容:

<!-- css3-mediaqueries.js for IE less than 9 -->
<!--[if lt IE 9]>
<script 
   src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">
</script>
<![endif]-->

答案 6 :(得分:6)

编辑回答:IE只了解屏幕并打印为导入媒体。随import语句提供的所有其他CSS都会导致IE8忽略import语句。像safari或mozilla这样的Geco浏览器没有这个问题。

答案 7 :(得分:6)

在IE8及以下版本中根本不支持

Media queries

基于Javascript的解决方法

要添加对IE8的支持,您可以使用多种JS解决方案之一。例如,可以添加Respond以仅使用以下代码添加IE8的媒体查询支持:

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->

CSS Mediaqueries是另一个执行相同操作的库。将该库添加到HTML中的代码是相同的:

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->

替代

如果你不喜欢基于JS的解决方案,你还应该考虑添加一个IE&lt; 9唯一的样式表,你可以在其中调整特定于IE&lt; 9的样式。为此,您应该在代码中添加以下HTML:

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->

注意:

从技术上讲,这是另一种选择:使用CSS hacks来定位IE&lt; 9。它与IE&lt; 9唯一样式表具有相同的影响,但您不需要单独的样式表。不过,我不推荐这个选项,因为它们会产生无效的CSS代码(这只是为什么今天使用CSS黑客的一个原因之一。)

答案 8 :(得分:5)

在Internet Explorer 8之前,不支持媒体查询。但根据您的情况,您可以尝试使用条件注释仅针对Internet Explorer 8及更低版本。您只需使用正确的CSS文件架构。

答案 9 :(得分:4)

http://blog.keithclark.co.uk/wp-content/uploads/2012/11/ie-media-block-tests.php

我使用了@media \0screen {},它在REAL IE8中对我来说很好。

答案 10 :(得分:3)

IE直到IE9才添加媒体查询支持。因此,使用IE8,你运气不好。