IE8支持CSS Media Query

tes*_*dtv 178 html css internet-explorer-8 media-queries responsive-design

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

@import url("desktop.css") screen and (min-width: 768px);
Run Code Online (Sandbox Code Playgroud)

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

以下代码有任何问题吗?

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

Knu*_*Knu 341

css3-mediaqueries-js可能就是你要找的东西:这个脚本模拟媒体查询.但是(从脚本的站点)它"不适用于@imported样式表(出于性能原因你不应该使用它.)也不会听取<link><style>元素的媒体属性".

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

  • 回应对我很有用.css3-mediaqueries没有. (43认同)
  • 为什么这不是标记为答案?非常适合我,谢谢.顺便说一句,由于开销,您不应该使用import css查询. (7认同)
  • 响应有效,但css3-mediaqueries没有.我想这是因为Respond是自包含的,但是css3-mediaqueries依赖于一些jQuery函数,比如用户代理检测,这个函数被弃用和删除(参见jQuery文档). (4认同)
  • nevermind - > .js应该包含在.css文件... xD之后 (3认同)
  • 在IE8中没有为我工作...... Respond.js确实有效. (2认同)

Aar*_*ron 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]-->
Run Code Online (Sandbox Code Playgroud)

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

  • 我没看到条件样式表如何解决响应式设计问题. (93认同)
  • 确实,这个答案不是一个响应式的解决方案,但对我来说这是一个巨大的"但",事实是IE8并没有在iPad或Android平板电脑上使用.IE8可以在XP/Vista PC上使用,主要是从2003年到2009年,屏幕主要是1024px宽.Windows Mobile在IE6下,而Windows Pone在IE9 +下.这里真正的问题是问自己,对IE8做出响应是否真的有用? (54认同)
  • @GregoireD.是的.**因为有人使用缩放查看网页.**在我的公司,我们格式化页面,因为4x放大800x600,以便访问.这使得屏幕像400px宽度.尽管您选择了浏览器(并且包含IE8),但媒体查询对此非常有用. (16认同)
  • 我认为正确的答案是IE8 __不支持媒体查询___.这个答案有点说,但乍一看并不完全清楚.无论如何,我认为它确实得到了支持,这个答案确实帮助我意识到了这一点. (13认同)
  • 我不明白这个解决方案将如何解决IE中的响应式设计?根据浏览器大小,根据浏览器大小加载不同的样式表与使用不同的样式属性无关. (8认同)
  • Blimey,很多最好的练习鼓敲打这一个.使用IE条件是一个完全实用的解决方案,如果用户在IE8上,他们不会对您的响应式网站给出一个该死的,在条件包含的文件中包含桌面样式与宽度或位置有关,它应该看起来只是作为固定宽度的网站很好(喘气!).另外,对于记录css3-mediaqueries不是一个神奇的子弹,如果你有超过32个媒体查询,它会窒息,并且在调整大小/加载时有一个滞后.在<IE9上固定宽度以获得理智. (5认同)
  • 我想要媒体类型(桌面/ iPad等)的条件CSS,而不是浏览器. (4认同)
  • 我同意IE8不支持媒体查询,但我不同意它并不重要.真正的响应式设计应该是移动的.也就是说,您首先使用较小文件大小的小图像设计移动设备,然后使用媒体查询为桌面加载更大的图像.移动用户获得更快的体验,桌面浏览器可以获得更大,更清晰的图像.但是,缺点是IE8用户遭受了损失.有几个填充脚本在IE8中提供媒体查询,其中一些非常小. (4认同)
  • | 因为有人使用缩放查看网页.有些人将3个手臂和2个手指放在马桶上倒置.我想我们都同意@GregoireD.那是否真的有用呢?不太可能. (2认同)

Bra*_*ugh 50

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

<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

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


Far*_*ini 14

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

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

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

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


小智 11

取自css3mediaqueries.js项目页面.

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


Ben*_*n C 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]-->
Run Code Online (Sandbox Code Playgroud)


sra*_*sra 6

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


Joh*_*ers 6

IE8及以下版本根本不支持媒体查询.


基于Javascript的解决方法

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

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

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

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

替代方案

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

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

注意 :

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


小智 5

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