IE8对CSS媒体查询的支持


178

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);

对于那些想通过媒体尝试嵌入式CSS并使用
response

Answers:


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插件相比,这可能是一个更简单,更易于访问的解决方案。


94
我看不到条件样式表如何解决响应式设计问题。
詹姆斯·韦斯特盖特

8
我不明白该解决方案将如何解决IE中的响应式设计?例如,根据浏览器加载不同的样式表与根据浏览器大小使用不同的样式属性无关。
Klikerko'3

13
我认为正确的答案是IE8 不支持媒体查询。这个答案有点像这样,但是乍一看并不清楚。无论如何,我认为它确实有支持,并且这个答案确实帮助我意识到了其他方面。
杰森

54
的确,此答案不是响应式的解决方案,但对我而言,这是一个巨大的“错误”,事实是IE8未在iPad或Android平板电脑上使用。IE8可以在2003年至2009年间大部分用于XP / Vista PC上,屏幕宽度大约为1024px。Windows Mobile在IE6下,而Windows Pone在IE9 +下。真正的问题是问自己:对IE8做出响应是否真的有用?
Gregoire D.

16
@GregoireD。是的。因为有些人以缩放方式查看网页。在我公司中,出于可访问性,我们将页面格式从4倍放大到800x600。这使得屏幕像400px的宽度。尽管您选择了浏览器(包括IE8),媒体查询也确实对此有用。
阿卡纳(Arkana)2013年

341

css3-mediaqueries-js可能正是您要寻找的:此脚本模拟媒体查询。但是(从脚本站点)它“在@imported样式表上不起作用(出于性能原因,您无论如何都不应使用它。)也不会监听<link>and <style>元素的media属性”。

本着同样的精神,你有更简单的Respond.js,这使得只有min-widthmax-width媒体查询。


7
为什么没有将此标签标记为答案?非常适合我,谢谢。顺便说一句,由于开销,您不应该使用import CSS查询。
RichW 2012年

完美,正是我想要的!
somdow

谢谢!!这个答案和response.js节省了我大量时间,试图对IE8中的媒体查询进行解决。
Ingusmat 2013年

3
没关系-> .js文件之后应包括.js文件... xD
kaljak

4
响应有效,但css3-mediaqueries没有。我想这是因为Respond是自包含的,但是css3-mediaqueries依赖于某些jQuery函数(如用户代理检测),并且不推荐使用和删除此函数(请参阅jQuery文档)。
安东·博里茨基


14

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

有一些变通办法,可以使用JavaScript向这些浏览器添加媒体查询支持。试试这些:

媒体查询jQuery插件(仅处理最大/最小宽度)

css3-mediaqueries-js –一个旨在向不支持的浏览器添加媒体查询支持的库


好的..我只是在页面中包含了css3-mediaqueries.js。.仍然无法在IE中运行。 768px);“ 以及“ @import url(“ desktop.css”)不是屏幕和(device-width:768px);“
testndtv 2011年

不知道我是否还需要做其他事情..包括脚本在内..
testndtv 2011年

请注意,它不适用于导入的CSS。试试这个:<link rel =“ stylesheet” type =“ text / css” media =“ not screen and(device-width:768px)” href =“ desktop.css” />
Faraz Kelhini 2011年

哦,好吧。实际上,在这种情况下,它可能无法帮助我,因为我在寻找的东西没有在CSS中唯一可从外部对page..ie做任何事情..
testndtv

那个googletrunk css3 js脚本指定,它只能与在CSS样式表中使用的mediaquery一起使用,而不是在外部(例如“仅屏幕和....”)使用。这意味着您必须将样式表统一为一个,并且在其中进行外部所需的操作:@media屏幕和(最大宽度:980px){
Capagris

11

摘自css3mediaqueries.js项目页面。

注意:不适用于@import样式表(出于性能原因,无论如何都不应使用)。也不会监听<link>and <style>元素的media属性。


+1告诉我在@import样式表上不起作用!为我的WP儿童主题节省很多时间。
Vinicius Garcia 2014年

8

使用css3-mediaqueries-js的一种简单方法是在结束body标签之前添加以下内容:

<!-- 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

编辑答案:IE仅将屏幕和打印理解为导入媒体。与import语句一起提供的所有其他CSS导致IE8忽略import语句。Safari和Mozilla等Geco浏览器没有此问题。


我的IE是不兼容mode..Also有没有其他替代的IE..Basically我只是想选择一个,除了屏幕768px一切设备..
testndtv

同样,正如您在链接上所讨论的,我尝试将doctype设置为<!DOCTYPE html PUBLIC“-// W3C // DTD XHTML 1.0 Transitional // EN”“ w3.org/TR/xhtml1/DTD/xhtml1-transitional。 DTD “> ...仍然无法正常工作..
testndtv

1
如果您说对了,我不保证。您可以使用JavaScript来检测屏幕分辨率吗?使用CSS没有其他方法。您确定您没有任何相关的错误,导致最小值被忽略或忽略。提示是开发人员工具栏。这样,您可以现场测试,而不pagereloads
SRA

切换到快速模式非常快,您检查了吗?这也可能导致不良结果。Quirkmode将覆盖您的文档类型。这也是上帝的做法是测试你在一个超级的小项目enhure想要的东西,这不是一个相关的错误/结果
SRA

好的..这是我现在的更新方式...我有common.css,里面说;... @import url(“ desktop.css”)屏幕;@import url(“ ipad.css”)仅屏幕和(device-width:768px); 不知道这种方法是否正确,但适用于台式机(IE / FF)和iPad。这种方法会存在一些问题吗?
testndtv 2011年

6

IE8及更低版本完全不支持媒体查询


基于Java的解决方法

要添加对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 <9的样式表,在其中调整特定于IE <9的样式。为此,您应该在代码中添加以下HTML:

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

注意 :

从技术上讲,这是另一种选择:使用CSS hacks锁定IE <9。它与仅IE <9的样式表具有相同的影响,但是您不需要单独的样式表。但是,我不建议您使用此选项,因为它们会生成无效的CSS代码(这只是今天普遍不赞成使用CSS hack的几个原因之一)。


5

在Internet Explorer 8之前,不支持媒体查询。但是根据您的情况,您可以尝试使用条件注释来仅定位Internet Explorer 8及更低版本。您只需要使用适当的CSS文件体系结构。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.