PrefixFree: вариант выхода из ада префиксов

Что не так с префиксами?

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

.download {
	   position: absolute;
	   top: 1em;
	   left: -1.5em;
	   width: 6em;
	   height: 6em;
	   padding: 1em 0;
	   background: #80A060;
	   background-image: -webkit-linear-gradient(transparent, rgba(0,0,0,.3));
	   background-image: -moz-linear-gradient(transparent, rgba(0,0,0,.3));
	   background-image: -o-linear-gradient(transparent, rgba(0,0,0,.3));
	   background-image: -ms-linear-gradient(transparent, rgba(0,0,0,.3));
	   background-image: linear-gradient(transparent, rgba(0,0,0,.3));
	   color: white;
	   line-height: 1;
	   font-size: 140%;
	   text-align: center;
	   text-decoration: none;
	   text-shadow: .08em .08em .2em rgba(0,0,0,.6);
	   -webkit-border-radius: 50%;
	   -moz-border-radius: 50%;
	   border-radius: 50%;
	   -webkit-box-shadow: .1em .2em .4em -.2em black;
	   -moz-box-shadow: .1em .2em .4em -.2em black;
	   box-shadow: .1em .2em .4em -.2em black;
	   -webkit-box-sizing: border-box;
	   -moz-box-sizing: border-box;
	   box-sizing: border-box;
	   -ms-transform: rotate(15deg);
	   -webkit-transform: rotate(15deg);
	   -moz-transform: rotate(15deg);
	   -o-transform: rotate(15deg);
	   -ms-transform: rotate(15deg);
	   transform: rotate(15deg);
	   -webkit-animation: none;
	   -moz-animation: none;
	   animation: none;
}

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

Плагин PrefixFree разработан так, чтобы не использовать префиксов совсем, даже для свойств @keyframes или transition, которые нигде не поддерживаются без префиксов.

Скрипт делает все с помощью кода  JavaScript. Он обрабатывает привязанные таблицы стилей (за исключением указанных в правиле @import), встроенные стили, и даже CSS добавленный позже  (как в новых элементах, изменениях свойства CSSOM и запросах).

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

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

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

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

При использовании плагина выше приведенный код будет выглядеть следующим образом:

.download {
	   position: absolute;
	   top: 1em;
	   left: -1.5em;
	   width: 6em;
	   height: 6em;
	   padding: 1em 0;
	   background: #80A060;
	   background-image: linear-gradient(transparent, rgba(0,0,0,.3));
	   color: white;
	   line-height: 1;
	   font-size: 140%;
	   text-align: center;
	   text-decoration: none;
	   text-shadow: .08em .08em .2em rgba(0,0,0,.6);
	   border-radius: 50%;
	   box-shadow: .1em .2em .4em -.2em black;
	   box-sizing: border-box;
	   transform: rotate(15deg);
	   animation: none;
}


 

Неужели он лучше серверного варианта решения?

Итак, подведем итоги и укажем все аргументы за и против обеих решений. Использование скрипта на серверной стороне означает:

  • Его надо часто обновлять, так как поддержка браузерами свойств CSS3 меняется и часть префиксов становится не нужными. PrefixFree автоматически определяет необходимость префикса.
  • Все префиксы должны быть загружены. Что существенно увеличивает размер передаваемых файлов. Для таблицы средних размеров размер увеличения может оказаться больше размера  файла prefixfree.js.
  • В случае использования препроцессоров, например LESS или SASS, вы будете зависеть от их внутреннего синтаксиса. Поэтому нельзя будет просто удалить скрипт через несколько лет.

Но у серверного варианта есть ряд преимуществ:

  • Файл дольше загружается, но пользователь не видит версии без префиксов. Использование плагина PrefixFree занимает некоторое время.
  • Серверный вариант будет работать даже с отключенной поддержкой JavaScript. Для варианта использования PrefixFree при отключении JavaScript дизайн лишится некоторых свойств CSS3, но останется функциональным. Если ваш код CSS написан корректно, то дизайн должен оставаться функциональным даже без использования CSS3.

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

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/aVbAFcyepa8/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

PrefixFree: вариант выхода из ада префиксов | | 2012-06-19 12:01:08 | | Статьи Web-мастеру | | Что не так с префиксами?Нет сомнений, что CSS3 отличный и мощный инструмент в руках разработчика. Но те, кто им пользуются попадают в ад префиксов. Посмотрите на реальный пример:.download { position: | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: