Приемы постепенной деградации css. Принципы «отзывчивого» веб-дизайна. Тест на кроссбраузерность будет иметь решающее значение

В этой статье мы попробуем разобраться, в чем же разница между двумя принципами создания страницы на основе «отзывчивого» веб-дизайна: Progressive Enhancement и Graceful Degradation.

Graceful degradation

Graceful degradation, или «отказоустойчивость» - это более широкое понятие, которое применяется, не только в веб-дизайне. В общем смысле предполагает способность системы работать даже в случае отказа некоторых ее компонентов. И чем серьезнее отказ, тем ниже качество работы системы или работы с системой, но при этом основной функционал системы остается рабочим.

Graceful degradation может выражаться в возможности работы с отключенным JavaScript, в акуратном отображении сайта в браузере без поддержки спецификации CSS3, в адекватном отображении сайта с отключенными картинками. Все эти отказы не должны влиять на работу веб-приложения. Однако, если все работает, то пользователю гораздо удобнее пользоваться сайтом.

Если рассмотреть конкретный пример, например в области проектирования веб-интерфеса, то этот принцип можно сформулировать как «система может работать и с полностью отключенным JavaScript, но с включенным с ней будет работать намного удобнее». Вопрос не в том, может ли быть такая ситуация, что JS отключен или не функционирует полностью, или почему это происходит. Эта ситуация берется как данность. Дизайнер должен разработать такой интерфейс, который будет так же продолжать работать, пусть и с отключенным JS.

Часто для следования этому принципу приходится переделывать логику серверной обработки форм. Однако, такой подход будет окупаться, если задуматься об отказоустойчивости еще на этапе планирования формы.

Соблюдение принципа graceful degradation позволяет пользователям (а каждый пользователь - это потенциальный клиент) иметь возможность работы с сайтом в любых ситуациях.

Progressive Enhancement

Прогрессивное улучшение представляет собой принцип, который вкупе с «mobile first» создает теоретическую основу для «отзывчивого» (адаптивного) веб-дизайна. Уже его название говорит, что он позиционирует создание веб-страницы поэтапно, циклически, по принципу «от простого - к сложному». На каждом из заранее намеченных этапов внешний вид страницы должен становиться красивее, лучше и удобнее, однако весь функционал должен быть доступен изначально.

Является более частным случаем graceful degradation, так как все построенные на нем веб-страницы будут полностью соответствовать принципу graceful degradation.

Обычно создание страницы по принципу прогрессивного улучшения состоит из следующих этапов:

  • Создание страницы на «чистом» HTML
    На этом этапе создается полнофункциональная страница, которая состоит из одного только HTML-кода, семантически и логически верного, а, значит может интерпретироваться любым браузером, даже самым простейшим. На этом этапе не производится никакого форматирования и браузер сам форматирует страницу по тем стандартам, которые в нем вложены. Прогрессивное улучшение настаивает на том, что первый этап самый важный, так как нет в вебе ничего более ценного, чем контент.
    Коротко: создание семантической и логической структуры документа
  • Добавление правил CSS
    На этом этапе применяется CSS-таблица старого формата: добавляется сетка разметки, позиционирование элементов, применяются фоновые изображения для блоков, изменяются стили, цвета и начертания текстов. В общем, страница получает новый стилизованный вид, становится красивее и приятнее.
    Коротко: придание внешнего вида документу
  • Применение CSS3
    Теперь к документу можно применить все эффекты и улучшения, предусмотренные спецификацией CSS3. То есть добавить полупрозрачность, тени, скругление углов для блоков, плавные анимационные переходы для псевдоклассов или элементов форм.
    Коротко: придание безупречности внешнему виду документа
  • Создание скриптов на JavaScript
    На этом этапе создаются все эффекты и принципы взаимодействия веб-страницы с пользователем с использованием JavaScript. Это и запросы AJAX, и динамическая загрузка или проверка данных, анимационные эффекты и виджеты (например, Prototype или jQuery). В общем делаем страницу удобнее для пользователя.
    Коротко: взаимодействие, интерактивность, удобство

Попробуем применить данный подход на практике. Разработаем и оформим простейшую форму входа на сайт. На первом этапе создадим форму логина на чистом HTML. Форма не так красива, но она полностью функциональна. Ниже приведен код страницы и результат отображения в браузере:

Теперь на втором этапе придадим форме стиль применив к ней таблицу стилей, содержащую только те правила, которые применимы к CSS без специальных свойств. Добавим цвет фона, отступы, выравнивание. Теперь форма выглядит лучше:

Теперь добавим правила из спецификации CSS3. Добавим закргления к блокам, тени для полей ввода текста, стилизуем кнопку, с помощью новых селекторов уберем ненужный отступ сверху. Получим улучшенную форму:

На последнем этапе можем создать AJAX-запрос, чтобы пользователь мог зайти на сайт без необходимости перезагружать страницу.

При этом на каждом конкретном этапе (при поддержке его браузером) будет отображаться полностью функциональная страница. Но если браузер поддерживает более совершенные технологии, то страница становится только лучше.

Какому принципу следовать?

Если сайт максимально эффективно выстроить по концепции graceful degradation, то получится приблизительно то же самое, что и было бы при использовании progressive enhancement. Так в чем же тогда разница?

Дело в том, что построить сайт по принципу graceful degradation достаточно сложно, так как немного разработчиков могут сделать это качественно. В самом простом случае graceful degradation можно сделать следующее: создать сайт для самой последней версии браузера, а затем показать пользователям сообщение, в котором указывается, что им необходимо выполнить загрузку новой версии браузера. При этом разработчиков может и не волновать, как сайт выглядит в старых браузерах. Еще одним примером плохого graceful degradation является полное отключение функциональности сайта при отключении JavaScript. Яркий пример – отправление сообщений на сайте Facebook.com.

Поэтому progressive enhancement возник в ответ на некачественный graceful degradation. Проектировать такие интерфейсы стало проще и качественнее, так как есть четко сформулированные этапы создания интерфейса.

В адаптивном дизайне есть понятие «mobile first», которое в чем-то соответствует понятию progressive enhancement, так как призывает действовать от простого к сложному, от мобильных экранов до настольных ПК. Именно поэтому ключ к правильному применению адаптивного веб-дизайна зависит от умения разработчика применять принципы progressive enhancement и mobile first.

Давно не писала, пришлось переехать в место без интернета (вот ужас-то), в следствии чего писать в бложик не смогла. Сегодня я хочу рассказать о методе разработки (вёрстки) который частично используется в оформлении моего бложика.

В последних версиях инновационных браузеров (типа FF 3.5, Opera 10) введены некоторые декоративные эффекты из предложенной спецификации CSS 3. Прозрачность, тени и эффект зебры (полосатости) теперь доступны без использования JavaScript, или дополнительной разметки. Но в некоторых старых браузерах, которые всё ещё используются этих свойств нет, и было бы грустно думать что у вас не будет шанса использовать эти замечательные эффекты ещё несколько лет.

В этой статье я расскажу о том как сделать приятные (постепенные) улучшения в браузерах которые поддерживают особенности CSS3 и при этом показать удовлетворяющую остальных пользователей вёрстку.

Что такое постепенное улучшение (progressive enhancement)?

Чтобы понять концепцию "постепенного улучшения", нужно понять принцип "лёгкого ухудшения" (graceful degradation), который хорошо описан следующей цитатой:

Лёгкое ухудшение означает что ваш сайт продолжает работать даже если просматривается в менее чем оптимальном браузере, в котором продвинутые эффекты не работают.
Fluid Thinking, by Peter-Paul Koch

"Постепенное улучшение" использует тот же метод только с противоположной стороны, вместо заботы о том чтобы сайт не развалился в старом браузере, нужно прежде всего думать о контенте и просто добавлять в дизайн особенности современных программ чтобы улучшить пользовательское восприятие, в то время как базовое состояние вёрстки всё ещё работает на старых машинах. Это на текущий момент наилучший, способ применять новые возможности CSS 3.

Пример

Для примера сделаем простое меню навигации которое будет выглядеть немного красивее в зависимости от поддержки CSS в вашем любомом браузере.

Хотела бы заметить что в этом примере я не использую графику, хаки или браузеро-специфические префиксы - все улучшения засчёт декларированных возможностей. Подразумевая это некоторые вещи ниже сделаны специально для примера, и могут быть не лучшим выбором в создании реальных сайтов.

Разметка

Сделаем простое меню используя неупорядоченный список (ul):

Базовый стиль

В качестве базового я применю стиль который использует только простые селекторы наслезования. Он создаёт границу у каждого элемента и меняет фон при наведении мыши (onmouseover). Это должно работать в любом браузере сделанном за последние 7-8 лет (и возможно больше).

CSS очень прост:

Ul {
background-color: blue;
border-bottom: 1px dotted #999;
list-style: none;
margin: 15px;
width: 150px;
}

li {
background-color: #fff;
border: 1px dotted #999;
border-bottom-width: 0;
font: 1.2em/1.333 Verdana, Arial, sans-serif;
}

li a {
color: black;
display: block;
height: 100%;
padding: 0.25em 0;
text-align: center;
text-decoration: none;
}

li a:hover { background-color: #efefef; }

Единственная странность тут это синий фон у

    ; это я объясню позже. С этим стилем, у нас будет следующий базовый вид, он будет отображаться в IE6 так:

    Базовая вёрстка, так будет выглядеть в IE6 и других старых браузерах.

    Применение улучшений

    IE7 был первым в серии браузеров IE который поддерживал все селекторы атрибутов из CSS 2.1, что тоже распространено в почти всех других браузерах. Мы можем использовать один из них - дочерний селектор - чтобы начать улучшение. Так как IE6 не поддерживает дочерние селекторы он проигнорирует следующие правила:

    Body > ul { border-width: 0; }

    ul > li {
    border: 1px solid #fff;
    border-width: 1px 0 0 0;
    }

    li > a {
    background-color: #666;
    color: white;
    font-weight: bold;
    }

    li:first--child a { color: yellow; }

    li > a:hover { background-color: #999; }

    С этими правилами CSS, список выглядит так:

    У меню теперь цветной фон и жирный текст, а также первая ссылка подсвечена другим цветом.

    Так отобразят список IE7, Firefox, Safari и Opera.

    Сделаем больший акцент

    Следующим шагом увеличим акцент, используя свойство которое IE не распознаёт: Прозрачность (opacity). Нам не надо применять специальных селекторов для этого, т.к. IE просто пропустит то свойсво которое он не поддерживает:

    Li { opacity: 0.9; }

    li:hover { opacity: 1; }

    Следующая картинка показывает как это свойство работает в опере, вы можете увидеть что элементы списка приобрели лёгкий синий оттенок от фона

      . При наведении мыши (mouseover), каждый элемент становится полностью непрозрачным:

      Вы можете конечно использовать IE"шное свойство filter для этого же эффекта в IE. Равно как и браузеро-специфичные префиксы (-moz-, -webkit-) для нижеуказанных свойств. Но в образовательных целях я придержусь стандарта CSS, так как filter не стандартное свойство, то оно и не валидно.

      Firefox 2 поддерживает прозрачность, но в более поздних браузерах мы можем пойти ещё дальше. В Safari и Opera, мы можем украсить текст используя свойство text-shadow:

      Li a:hover { text-shadow: 2px 2px 4px #333; }

      Как показывает следующая картинка, элемент при наведении приобретает небольшую тень и кажется слегка выступающим со страницы:

      Наконец, можно позаботиться полной поддержки Оперой новых CSS 3 селекторов и добавить ещё один слой улучшений: переменные цвета фона используя селектор nth-child:

      Li:nth-child(2n+1) a { background-color: #333; }

      li:nth-child(n) a:hover {
      background-color: #aaa;
      color: #000;
      }

      li:first--child > a:hover { color: yellow; }

      Мы увидим полосатое меню в Опере:

      Итог и выводы

      На рисунке ниже видно как начальная разметка выглядит в IE6, IE7, Firefox, Safari и Опере, после применения правил CSS описанных в этой статье. как вы можете видеть, так как поддержка браузерами CSS становится всё более утончённой, меню становится более стильным и сложным, и используя технику постеменного улучшения, меню остаётся рабочим даже в очень старых браузерах.

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

      Я смущен тем, что разница между Постепенное Повышение и Изящные Деградации . Мне кажется, это одно и то же.

      не могли бы вы объяснить мне разницу между двумя и в какой ситуации я бы использовать один над другим?

      8 ответов

      Они почти то же самое, но они отличаются в контексте.

      существует класс браузеров под названием "браузеры класса A". Это ваши типичные члены аудитории,которые (вероятно) составляют большинство ваших посетителей. Вы начнете с базового уровня этих пользователей. Назовем это лучшие современные практики .

      Если вы хотите увеличить опыт для тех, кто случайно использует FF3.6 или Safari 4 или какой-то другой разработчик whizbang nightly webkit whathaveyou, вы хотите сделать удивительные вещи, как

      • закругленные углы через css
      • затененный текст (но, пожалуйста, Боже, не слишком много)
      • drop shadows (см. выше в скобках)

      Это делает ваш сайт пипец ищет, но не сломает его. Это постепенное повышение . Охватывая будущее с точки зрения лучшие практики .

      с другой стороны, ваш нишевый сайт Nintendo привлекает достаточное количество пользователей IE5. Бедный ты, но ты также хочешь убедиться, что они продолжают возвращаться. Вы можете предоставить альтернативу вашему поведению ajax, включив сценарий ajax во внешний файл, и если их JS не включен, возможно, Ваши ссылки обновляют всю страницу. Так далее. С точки зрения лучшие современные практики , вы убедитесь, что некоторые исторические рынки обслуживаются некоторое подобие функционального сайта . Это изящный деградация .

      Они в основном идентичны, но отличаются с точки зрения приоритета для многих команд разработчиков: PE довольно приятно, если у вас есть время, но GD часто необходимые

      Если ваш сайт выглядит одинаково хорошо во всех браузерах, но некоторые браузеры получают, скажем, танцующих пони, потому что они поддерживают танцующих пони, то это прогрессивное улучшение. Он работает во всех браузерах, но некоторые браузеры получают что-то дополнительное. Обычно этот термин применяется к определенным функциям Javascript, которые могут повысить удобство использования за пределами "raw HTML".

      Если ваш сайт выглядит только так, как вы собираетесь в браузерах, которые полностью поддерживают, скажем, CSS3 и IE8-отобразит ту же страницу без, скажем, закругленных углов, тогда это изящная деградация. Сайт действительно предназначен для современных браузеров, но он по-прежнему используется в старых браузерах, просто не так причудливо.

      в конце концов, они действительно одно и то же, рассматриваемое с двух разных точек зрения.

      направление от выбранного базовый для каждого понятия разные.

      изящная деградация начинается на идеальном уровне пользовательского опыта и уменьшается в зависимости от возможностей агента пользователя до минимального уровня, обслуживая агентов, которые не поддерживают определенные функции, используемые базовой линией.

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

      Я думаю, что можно было бы использовать обе концепции, если позволит время/бюджет. Если нет, то предпочтительнее изящная деградация.

      Извините, что воскрешаю что-то, что старше года, но чувствовал, что могу внести свой вклад, в некотором роде, мое собственное мнение по этому вопросу.

      хотя я согласен с Алексом Mcp и deceze в некотором роде, термины "изящная деградация" и "прогрессивное улучшение" имеют несколько иное значение, чем я стою.

      изящные деградации , много времени (на мой взгляд), кажется, больше палки, чтобы бить приложение в представлении после того, как это был построен плохо в первую очередь в моем опыте. Как кто-то строит какой-то огромный объект javascript, который предоставляет пользователю что-то действительно классное, чтобы играть, пока не придет менеджер, проверяет вещь, и все бегут кричать, бросая руки, когда дело доходит до их внимания, что их приложение не работает в 35% браузеров. "кто-то лучше предусмотреть запасной вариант для этого."

      Постепенное Повышение хотя (и это такой хороший термин, чтобы сказать тоже), казалось бы, больше о создании чего-то, что просто работает, на начальном уровне, везде, с помощью самых основных доступных методов, чтобы обеспечить всю функциональность, которая нужна пользователю. Затем это можно добавить с помощью аккуратных маленьких ненавязчивых помощников, укладки и т. д. это фактически улучшает пользовательский опыт рассматриваемого приложения, а не просто делает его едва пригодным для использования. ", что выглядит круто. Работает ли он в IE6. О да. Он Делает"

      Я думаю, может быть, давая стиль в качестве примера обоих терминов в двух лучших ответах здесь вид упускает реальную основную проблему юзабилити, что постепенное повышение часто решает по своей природе, где изящные деградации игнорирует, пока все не пойдет не так.

      Тирада закончилась...

      изящная деградация-это практика создания веб-функциональности, чтобы она обеспечивала определенный уровень пользовательского опыта в более современных браузерах, но она также будет изящно деградировать до более низкого уровня пользователя в старых браузерах. Этот нижний уровень не так приятно использовать для посетителей вашего сайта, но он по-прежнему предоставляет им основную функциональность, которую они пришли на ваш сайт, чтобы использовать; вещи не ломаются для них.

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

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

      Изящные Деградации

      изящные деградации способность компьютера, машины, электронной система или сеть для поддержания ограниченной функциональности даже когда большой часть его разрушена или выведена из строя. Цель грациозная деградация должна предотвратить катастрофический провал.

      изящная деградация-одно из решений. Это практика создания веб-сайта или приложения, поэтому он обеспечивает хороший уровень пользовательского опыта в современных браузерах. Однако, это ухудшить изящно на старых браузеров. Система может быть не такой приятной или красивой, но основная функциональность будет работать на старых системах.

      простой пример-использование 24-битных Альфа-прозрачных PNGs. Эти изображения могут быть отображены в современных браузерах без проблем. IE5.5 и IE6 покажут изображение, но Эффекты прозрачности не сработают (при необходимости его можно заставить работать). Старые браузеры, которые делают не поддержка PNG покажет текст alt или пустое пространство.

      разработчики, принимающие изящную деградацию, часто указывают свой уровень поддержки браузера, например, браузеры уровня 1 (лучший опыт) и браузеры уровня 2 (деградированный опыт).

      Постепенное Повышение

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

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

      прогрессивное улучшение не требует от нас выбора поддерживаемых браузеров или возврата к макетам на основе таблиц. Мы выбираем уровень технологии, т. е. браузер должен поддерживать HTML 4.01 и стандартные запросы/ответы на страницы.

      вернемся к нашему примеру изображение, мы можем решить, что наше приложение должно работать во всех графических браузерах. Мы могли бы использовать более низкое качество GIF изображения по умолчанию, но заменяют их 24-битными png, когда браузер поддерживает их.

      ссылки

      Википедия: Постепенное Повышение и

      Индустрия веб-дизайна постоянно меняется, отчасти потому, что веб-браузеры и устройства постоянно меняются. Поскольку работа, которую мы выполняем как веб-дизайнеры и разработчики, просматривается через веб-браузер, наша работа всегда будет иметь симбиотические отношения с этим программным обеспечением.

      Изменения в веб-браузерах

      Одна из проблем, с которой всегда сталкивались дизайнеры и разработчики веб-сайтов, - это не только изменения в веб-браузерах, но и ряд различных веб-браузеров, которые будут использоваться для доступа к их веб-сайтам. Было бы замечательно, если бы все посетители сайта использовали новейшее и лучшее программное обеспечение, но это никогда не имело место (и, вероятно, никогда не будет).

      Некоторые посетители ваших сайтов будут просматривать веб-страницы с очень устаревшими браузерами и отсутствующими функциями более современных браузеров. Например, более старые версии браузера Microsoft Internet Explorer уже давно стали проблемой для многих веб-профессионалов. Несмотря на то, что компания отказалась от поддержки некоторых из своих самых старых браузеров, все еще есть люди, которые будут ими пользоваться - люди, с которыми вы, возможно, захотите иметь дело и общаться с ними.

      Определение «изящной деградации»

      Реальность такова, что люди, которые используют эти устаревшие веб-браузеры, часто даже не знают, что у них устаревшее программное обеспечение или что их работа в Интернете может быть скомпрометирована из-за их выбора программного обеспечения. Для них этот устаревший браузер - это просто то, что они давно используют для доступа к веб-сайтам. С точки зрения веб-разработчиков, мы хотим быть уверенными в том, что сможем предоставить этим клиентам полезный опыт, а также создавать веб-сайты, которые прекрасно работают в более современных, многофункциональных браузерах и устройствах, доступных сегодня.

      «Изящная деградация» - это стратегия обработки дизайна веб-страниц для различных браузеров, как старых, так и новых.

      Начиная с современных браузеров

      Дизайн веб-сайта, созданный для постепенного ухудшения качества, разрабатывается в первую очередь с учетом современных браузеров. Этот сайт создан с целью использования возможностей этих современных веб-браузеров, многие из которых «автоматически обновляются», чтобы люди всегда использовали последнюю версию. Тем не менее, веб-сайты, которые изящно деградируют, также работают эффективно для старых браузеров. Когда эти старые, менее функциональные браузеры просматривают сайт, он должен ухудшаться, пока он все еще функционирует, но, возможно, с меньшим количеством функций или других визуальных элементов отображения. Хотя эта концепция предоставления менее функционального или не очень привлекательного сайта может показаться вам странной, правда в том, что люди даже не узнают, что они пропали без вести. Они не будут сравнивать сайт, который они видят, с «лучшей версией», так что, пока сайт работает на то, что им нужно, и, по-видимому, не сломан ни функционально, ни визуально, вы будете в хорошей форме.

      Прогрессивное улучшение

      Концепция постепенной деградации во многом похожа на другую концепцию веб-дизайна, о которой вы, возможно, слышали - прогрессивное улучшение. Основное различие между стратегией постепенного ухудшения и прогрессивным улучшением заключается в том, где вы начинаете свой дизайн. Если вы начинаете с наименьшего общего знаменателя, а затем добавляете функции для более современных браузеров для своих веб-страниц, вы используете прогрессивное улучшение. Если вы начнете с самых современных, передовых функций, а затем уменьшите масштаб, вы будете использовать постепенную деградацию. В конце концов, созданный в результате веб-сайт, вероятно, предоставит такой же опыт, независимо от того, используете ли вы прогрессивное улучшение или постепенную деградацию. Реально, смысл любого из подходов состоит в том, чтобы создать сайт, который отлично работает для современных браузеров, и в то же время предоставляет удобный опыт для старых веб-браузеров и клиентов, которые продолжают их использовать.

      Изящная деградация не означает, что вы говорите своим читателям: «Загрузите самый последний браузер»

      Одна из причин, по которой многим современным дизайнерам не нравится подход изящной деградации, заключается в том, что он часто превращается в требование, чтобы читатели загружали самый современный браузер для работы страницы. Это не грациозная деградация. Если вам захочется написать «загрузите браузер X, чтобы эта функция заработала», вы покинете область постепенного ухудшения и перейдете к дизайну, ориентированному на браузер. Да, несомненно, полезно помочь посетителю веб-сайта перейти на более качественный браузер, но об этом часто приходится спрашивать (помните, что многие люди не понимают, как загружать новые браузеры, и ваше требование сделать это может просто напугать). их прочь). Если вы действительно хотите, чтобы их бизнес велел им сказать, что они покидают ваш сайт, чтобы загружать более качественное программное обеспечение, вряд ли это будет возможным. Если ваш сайт не обладает ключевой функциональностью, для которой требуется определенная версия браузера или выше, принудительное скачивание часто нарушает условия взаимодействия с пользователем, и его следует избегать.

      Хорошее эмпирическое правило - следовать тем же правилам для постепенного ухудшения, что и для прогрессивного улучшения:

      • Написать действительный, соответствующий стандартам HTML
      • Используйте внешние таблицы стилей для вашего дизайна и макета
      • Используйте внешне связанные скрипты для интерактивности
      • Убедитесь, что контент доступен даже для браузеров низкого уровня без CSS или JavaScript

      Имея в виду этот процесс, вы можете выйти и создать самый современный дизайн, какой только сможете! Просто убедитесь, что он работает в менее функциональных браузерах, все еще работая.

      Как далеко назад нужно идти?

      Один вопрос, который возникает у многих веб-разработчиков, заключается в том, насколько далеко вы должны поддерживать браузерные версии. На этот вопрос нет точного и сухого ответа. Это зависит от самого сайта. Если вы просмотрите аналитику трафика на сайте, вы увидите, какие браузеры используются для посещения этого сайта. Если вы видите значительный процент людей, использующих определенный более старый браузер, то вы, вероятно, захотите поддержать этот браузер или рискуете потерять этот бизнес. Если вы посмотрите на свою аналитику и увидите, что никто не использует более старую версию браузера, вы, вероятно, можете принять решение не беспокоиться о полной поддержке этого устаревшего браузера и его тестировании. Таким образом, реальный ответ на вопрос о том, как далеко назад ваш сайт нуждается в поддержке, - «как бы далеко назад ваши аналитики ни говорили вам, что ваши клиенты используют».

      Под редакцией Джереми Жирар.

      Оглавление:

      Префикс -webkit- доминирует в CSS настолько, что некоторые сайты без него работают неправильно. Это свидетельствует о следовании разработчиков не самым лучшим практикам в последние годы и это привело к неудачному, но практически вынужденному решению со стороны Mozilla. В Firefox версии 46 или 47 (это апрель или май 2016 года), Mozilla планирует реализовать поддержку нестандартных префиксов -webkit- , чтобы улучшить совместимость Firefox с сайтами, активно использующими -webkit (как правило, это сайты, ориентированные на мобильные устройства).

      Тем не менее, разработчики применяют префиксы, чтобы использовать новейшие возможности браузеров максимально быстро. Префиксы вызвали беспорядок с доминированием WebKit, но они же заставили веб двигаться вперед ускоренными темпами.

      Подход Mozilla и Microsoft безопасен для большинства сайтов. На многих сайтах будет использоваться префикс -moz- или же не потребуется никаких действий для совместимости с будущим обновлением Firefox. Но как профессиональные веб-разработчики, мы должны тщательно рассмотреть и понять, какие последствия это повлечет. Вы наверняка знаете, какие из ваших сайтов могут пострадать от этого обновления.

      Итак, пришло время переосмыслить подход к префиксам и протестировать сайты с ними.

      Поддерживаемые префиксы

      Есть целый ряд префиксов -webkit- , которые Mozilla может реализовать. Исходя тех данных, что я собрал, Mozilla не стремится к совпадению своего списка поддерживаемых префиксных свойств со списком Edge, так как не все из них нужны для совместимости движка раскладки.

      Разработчики Firefox также близки к аналогичному подходу:

      Текущий тренд в Mozilla это избегание вендорных префиксов за счет отключения не готовых свойств и использовании непрефиксной версии при достаточной стабильности. Это общая политика: в отдельных случаях возможны исключения - Борис из Mozilla

      Microsoft Edge также собирается отказаться от вендорных префиксов:

      “Microsoft также собирается отказаться от вендорных префиксов в Edge. Это значит, что разработчики, которые стремятся использовать специфичные возможности HTML и CSS не будут использовать специфичный префикс для Edge. Вместо этого они будут просто писать код в соответствии со стандартами” - Mashable

      Постепенной деградации, основанной на префиксах больше не будет

      Этот уход от вендорных префиксов означает одну вещь - постепенная деградация с помощью вендорных префиксов не имеет перспектив.

      Использование вендорных префиксов для применения стилей для конкретного браузера (например, только для Chrome) не являлось целью их введения; рекомендацией для разработчиков всегда было использование всех префиксов (от -webkit- до -o-). Если вы используете возможности, которые зависят от префиксных свойств и используете префиксы для постепенной деградации вашего дизайна в других браузерах, то это больше не работает.

      Заключение

      Времена меняются. Доминирование WebKit невольно повлекло проблемы с несовместимостью, что заставляет производителей остальных браузеров реализовывать префиксы -webkit- . Эта проблема исчерпает себя по мере отказа производителей браузеров от вендорных префиксов, но пока разработчики должны проверять, что префиксы не вызовут неожиданных результатов в не-WebKit браузерах.