Answers:
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插件相比,这可能是一个更简单,更易于访问的解决方案。
css3-mediaqueries-js可能正是您要寻找的:此脚本模拟媒体查询。但是(从脚本站点)它“在@import
ed样式表上不起作用(出于性能原因,您无论如何都不应使用它。)也不会监听<link>
and <style>
元素的media属性”。
本着同样的精神,你有更简单的Respond.js,这使得只有min-width
和max-width
媒体查询。
我找到的最好的解决方案是Respond.js,特别是如果您主要关心的是确保响应式设计可在IE8中使用。min / gzip压缩后,它非常轻巧,只有1kb,您可以确保只有IE8客户端加载它:
<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->
如果您正在使用引导程序,这也是推荐的方法:http : //getbootstrap.com/getting-started/#support-ie8-ie9
IE8(及更低版本)和3.5之前的Firefox不支持媒体查询。Safari 3.2部分支持它。
有一些变通办法,可以使用JavaScript向这些浏览器添加媒体查询支持。试试这些:
摘自css3mediaqueries.js项目页面。
注意:不适用于@import样式表(出于性能原因,无论如何都不应使用)。也不会监听<link>
and <style>
元素的media属性。
编辑答案:IE仅将屏幕和打印理解为导入媒体。与import语句一起提供的所有其他CSS导致IE8忽略import语句。Safari和Mozilla等Geco浏览器没有此问题。
IE8及更低版本完全不支持媒体查询。
要添加对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的几个原因之一)。
http://blog.keithclark.co.uk/wp-content/uploads/2012/11/ie-media-block-tests.php
我使用过@media \0screen {}
,在REAL IE8中对我来说效果很好。