媒体查询,bootstrap和css3-mediaqueries-js - 媒体类型(屏幕,手持设备等)是可选的吗?

时间:2012-05-10 22:04:54

标签: twitter-bootstrap media-queries responsive-design

我已经开始了一个基于twitter的bootstrap框架的新响应式Web项目(同时开始了LESS学习曲线)并且我遇到了IE和媒体查询的问题。作为IE7& 8不支持媒体查询,我抓取了css3-mediaqueries-js polyfill脚本的副本,以便IE开始响应。它不起作用: - (

经过大量的讨论后,我将问题缩小到了媒体查询语法。 Bootstrap的媒体查询是:

@media (max-width: 480px) { ... }                         // Landscape phones and down
@media (max-width: 767px) { ... }                         // Landscape phone to portrait tablet
@media (min-width: 768px) and (max-width: 979px) { ... }  // Portrait tablet to landscape and desktop
@media (min-width: 1200px) { ... }                        // Large desktop

原因是css3-mediaqueries-js无法正确解析这些内容,因为脚本期望在@media和{{1}之间存在媒体类型 - 屏幕,掌上电脑,所有等等}表达式,例如:

(...)

问题是,哪个是正确的,bootstrap或css3-mediaqueries.js? W3C规范(http://www.w3.org/TR/css3-mediaqueries/#media0)说css3-mediaqueries.js是正确的并且bootstrap是错误的:

  

媒体查询由媒体类型和零个或多个表达式组成   检查特定媒体功能的条件。

A slightly less authoritative source (Russ Weakly)反之亦然:

  

可以在没有媒体类型或关键字的情况下使用媒体功能。媒体   类型被假定为“全部”。 (幻灯片42)

更重要的是,这就是本机支持媒体查询的浏览器的行为方式。

那么需要修复,引导或css-mediaqueries-js?

1 个答案:

答案 0 :(得分:7)

此处有类似(已回答)的问题:Twitter Bootstrap 320andup Implementation

我放弃了css-mediaqueries-js,转而支持respond.js,对于没有媒体类型感到满意。

关于哪种方法'正确'的问题仍然存在,尽管它更多的是标准问题,而不是实施问题。我认为目前的媒体类型浏览器方式不是强制性的,可能会赢得胜利。这意味着css3-mediaqueries-js需要一些更新来处理这个问题。

感谢ChristianMüller对此提出的意见。