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; }

 

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

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

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

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

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

Источник: lred.ru

Оцените статью
новости для мужчин