Медиа-запросы, начальная загрузка и css3-mediaqueries-js — является ли тип носителя (экран, карманный компьютер и т. д.) необязательным?

Я начал новый адаптивный веб-проект, основанный на фреймворке начальной загрузки Twitter (одновременно приступая к кривой обучения 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 и (...) должен быть тип мультимедиа — экран, портативный компьютер, все и т. д., например:

@media all and (max-width: 480px) { ... }

Вопрос в том, что правильно, bootstrap или css3-mediaqueries.js? Спецификация W3C (http://www.w3.org/TR/css3-mediaqueries/#media0) говорит, что css3-mediaqueries.js правильный, а bootstrap неправильный:

Медиа-запрос состоит из типа мультимедиа и нуля или более выражений, которые проверяют условия определенных функций мультимедиа.

Чуть менее авторитетный источник (Russ Weakly) утверждает обратное:

Функцию мультимедиа можно использовать без типа мультимедиа или ключевого слова. Предполагается, что тип носителя — «все». (слайд 42)

Что еще более важно, именно так ведут себя браузеры, изначально поддерживающие медиа-запросы.

Итак, что нужно исправить, bootstrap или css-mediaqueries-js?


person mr.perplexed    schedule 10.05.2012    source источник


Ответы (1)


Аналогичный вопрос (отвеченный) здесь: Twitter Bootstrap 320andup Реализация

Я отказался от css-mediaqueries-js в пользу respond.js, который доволен отсутствием типа медиа. .

Мой вопрос о том, какой подход является «правильным», остается в силе, хотя это скорее вопрос стандартов, чем вопрос реализации. Я считаю, что нынешний браузерный подход к НЕОБЯЗАТЕЛЬНОМУ типу мультимедиа, скорее всего, победит. Это означает, что css3-mediaqueries-js нуждается в некотором обновлении, чтобы справиться с этим.

Спасибо Кристиану Мюллеру за его вклад в это.

person mr.perplexed    schedule 24.05.2012
comment
respond.js работает немного лучше, чем css3-mediaqueries-js (+1) - person Xavier; 02.07.2012
comment
Но автор, написавший response.js, говорит внизу, что css3-mediaqueries.js поддерживает множество функций его полифилла response.js. Поскольку я также новичок в начале разработки RWD, я не понимаю, какой полифилл использовать для резервных версий. - person PCA; 23.02.2013