【问题标题】:IE8 and REM based Media Queries基于 IE8 和 REM 的媒体查询
【发布时间】:2016-01-08 09:11:46
【问题描述】:

我希望我的媒体查询基于 REM,以支持用户进行各种浏览器缩放和/或基本/浏览器字体大小调整。理想情况下到 IE8。

加载 jQuery、HTMLshiv、Respond 和 REM polyfill,结果 REM polyfill 不支持媒体查询。虽然不太明白为什么,https://github.com/chuckcarpenter/REM-unit-polyfill/issues/60#issuecomment-135187895 但这是事实。

Chuck 说“在启动 polyfill 时忽略 MQ 规则,因为仅在桌面上需要支持”是什么意思。那么当 polyfill 在 MQ 支持中被踢掉的时候呢?为什么 IE8 中的 MQ 支持仅适用于桌面?

难道不是有些用户没有完全打开浏览器窗口,而是只有一半或四分之一的屏幕,因此屏幕宽度更小吗?我的浏览器大部分时间都没有全尺寸,无法在其他窗口等中工作。

那么,你们现在如何在 IE8 中支持基于 REM 的媒体查询?

像这里提到的https://stackoverflow.com/a/21122705/1010918 的后备方案会起作用吗?

@media screen and (min-width: 26.25rem , min-width: 420px) {?

认为这会起作用(我希望!!)所以我真的只能用条件 cmets 为 IE8 分配不同的样式表了吗?

你是这样处理的吗?我可能有哪些其他解决方案?

我已经阅读并思考了所有这些:
Basic CSS features not working in IE8
How do you use mobile-first in IE8
media query unlinking IE8 stylesheet
modernizr for ie8 media query support
What´s best practice to responsive design? Use % or em and rem?
IE8 support for CSS Media Query

查看此视频以获取基于 REM 的设计示例。我相信这也可以用 ie8 以某种方式完成。
http://webdesign.tutsplus.com/courses/responsive-web-design-revisited/lessons/what-responsive-means-today-and-what-youll-be-building

【问题讨论】:

  • IE8 无法响应 css。只需为桌面使用固定布局。
  • 用 IE8 查看 getbootstrap.com 效果很好。问题是如何最好地使其与媒体查询中的 REM 单元一起工作,因为在媒体查询中使用 PX(就像 BS 3 一样)并不是 RWD 的真正意义所在。所以要么是单独的样式表,要么是其他东西。我正在寻找那个“别的东西”,我确信它就在那里。

标签: javascript css internet-explorer-8 media-queries fallback


【解决方案1】:

IE8 也不支持媒体查询,所以并不是 polyfill 将它们关闭,只是 IE8 根本不支持它们。

Chuck 说“在启动 polyfill 时忽略 MQ 规则,因为仅在桌面上需要支持”是什么意思。那么当 polyfill 在 MQ 支持中被踢掉的时候呢?为什么 IE8 中的 MQ 支持只需要桌面?

他的意思是IE8只能在桌面上运行,所以以响应式的方式支持它是没有意义的。

难道不是有些用户没有完全打开浏览器窗口,而是只有一半或四分之一的屏幕,因此屏幕宽度更小吗?我的浏览器大部分时间都没有全尺寸,无法在其他窗口等中工作。

好的,所以也许以响应式的方式支持它是有道理的,但这对开发人员来说不是一个足够好的理由——他认为添加这种支持的额外困难将是太多的工作,以至于不值得.

他确实在票中说,如果其他人想做这项工作并提交代码更改,那么他会考虑将它们带入库,但他不会这样做。

有多少工作量?

嗯,值得再次指出的是 IE8 不支持媒体查询。因此,为了在 IE8 中获得 MQ,您需要使用另一个 polyfill 库,例如 RespondJS。

因此,使 IE8 REM 与 MQ 一起工作的工作实际上是使 REM polyfill 和 RespondJS 相互了解并协同工作——很有可能您需要对这两个库进行更改以使它完全有效。这可能很难做到。我当然可以理解他们为什么决定不打扰。

因此,就目前情况而言,我认为您将不得不接受您想做的事情在 IE8 中是不可能的。除非您想开始在 polyfill 库中进行修改以自己修复它。

【讨论】:

  • 谢谢。因此,如果必须的话,基本上一个 IE8 或者可能是一个 IE8 和更低的样式表可以派上用场,否则使用 IE9 > 并祈祷。
  • 我知道这个问题已经过时了,但是如果您需要解决这个问题而不是祈祷,我确实“破解了 polyfill”,请查看我的解决方案:github.com/nbouvrette/remPolyfill
【解决方案2】:

因为我遇到了同样的问题,你实际上有一个真正的选择。不确定 2017 年会有很多人对此解决方案感兴趣,但它确实有效!

https://github.com/nbouvrette/remPolyfill

【讨论】:

  • 好一个 Nicolas! 就在我想切换到 IE10 基线时,你想到了这个。可能不是很多人需要这个,但是当你这样做时,它会非常棒使用。如果我可以大胆地这么说的话,肯定会尝试一下,尤其是拥有全球/亚洲/中国用户的网站将从中受益匪浅。不知道是什么情况,但是 XP/IE6 和 7/IE8 仍然会持续很长时间,并不是每个人都会更新 IE 或安装最新的 Chrome 或 FF。
  • Also this 即使与问题无关,因为这将是我的下一步,现在我不需要重写 JS eventListeners .. 也肯定会试一试没有什么坏处,因为它都可以用条件 cmets 调用,哦,在 2017 年支持 IE6-IE8 的乐趣(不是讽刺或消极的方式)。:)
  • 还有 thisthis,虽然后者有点老,但随着 7/IE8 的提供,这个 polyfill 将真正派上用场,如果你为那个市场设计,谢谢 Nicolas。跨度>
  • 很高兴看到我不是唯一享受旧版修复的人 :) 如果您有任何问题,请直接联系我,我很乐意提供帮助。我设法建立了一个仍然可以在 IE8 上运行的网站,首先是移动设备,HTML5 带有自定义脚本加载器并且没有丑陋的标记。我喜欢用 IE8 作为终极兼容性测试 :)
  • 非常感兴趣自定义脚本加载器以保持标记干净。我在哪里可以找到您构建的站点和加载程序,或者更好的是,我如何直接 ping 您?不在LinkedIn上,所以除了在您的回购上提出问题外,我无法与您联系,但是我的个人资料中提供的电子邮件可以正常工作,如果您可以给我发短消息,我会很快就联系上了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2013-12-02
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多