- PVSM.RU - https://www.pvsm.ru -
Перевод статьи в The Guardian Mobile-first Responsive Web Design and IE8 [1] о разработке адаптивной версии онлайн-издания, точнее о способе реализации поддержки IE 8. Также советую посмотреть интересный Case Study [2] процесса, это очень познавательно.
Буквально на днях вышла новая, 11-ая версия браузера Internet Explorer в составе Windows 8.1, но 4,5% читателей сайта The Guardian до сих пор используют IE 8. И разработчики новой адаптивной версии сайта не могли пренебрегать предпочтениями этих пользователей.
Основной проблемой была плохая поддержка старыми браузерами необходимых для адаптивного дизайна функций. Необходимо было реализовать поддержку IE 8 без ущерба работе в других, более современных браузерах.
Вот перечень технологий, которые нельзя было использовать:
Это было большой проблемой, потому что планировалось использовать самые современные технологии и разработать легкий и удобный сайт. Для поддержки IE 8 необходимо дополнительно прописывать некоторый функционал, что приведет к ухудшению общей производительности сайта.
Было решено начать с реализации поддержки Media Queries в Internet Explorer 8, что является очень важной частью для крупных новостных и информационных сайтов.
Файл стилей для всех браузеров, кроме IE 8 и ниже. Мы используем mq() (SASS) вместо обычных Media Queries:
// global.scss
@import "mq";
.element {
// Мобильные устройства
@include mq($from: mobile) {
color: green;
}
// Планшеты
@include mq($from: tablet) {
color: blue;
}
// Десктопы
@include mq($to: desktop) {
color: red;
}
}
Это переходит в следующий код:
// global.css
@media all and (min-width: 18.75em) {
.element {
color: green;
}
}
@media all and (min-width: 37.5em) {
.element {
color: blue;
}
}
@media all and (max-width: 56.1875em) {
.element {
color: red;
}
}
Для поддержки старых user agent устанавливаем $mq-responsive на false:
// old-ie.scss
$mq-responsive: false;
@import "mq";
.element {
@include mq($from: mobile) {
color: green;
}
@include mq($from: tablet) {
color: blue;
}
@include mq($to: desktop) {
color: red;
}
}
Получается:
// old-ie.css - для версий IE <= 8
.element {
color: green;
color: blue;
}
В результате media query был "растрирован [3]", осуществлена поддержка IE 8. Более ранние версии смогут поддерживать только значение min-width.
Осталось только разделить old-ie.css и global.css по user-agent'ам:
<!--[if (gt IE 8) | (IEMobile)]><!-->
<link href="global.css" rel="stylesheet" />
<!--<![endif]-->
<!--[if (lt IE 9) & (!IEMobile)]>
<link href="old-ie.css" rel="stylesheet" />
<![endif]-->
В результате описанный способ обладает несколькими преимуществами:
Можно вживую пощупать Sass MQ с помощью Sass MQ online [4].
Ссылка на GitHub [5]
Автор: grokru
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/veb-dizajn/46257
Ссылки в тексте:
[1] Mobile-first Responsive Web Design and IE8: http://www.theguardian.com/info/developer-blog/2013/oct/14/mobile-first-responsive-ie8
[2] Case Study: http://mattandrews.info/talks/port80-2013/
[3] растрирован: http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
[4] Sass MQ online: http://sassmeister.com/gist/6130742
[5] Ссылка на GitHub: https://github.com/guardian/sass-mq
[6] Источник: http://habrahabr.ru/post/198488/
Нажмите здесь для печати.