- PVSM.RU - https://www.pvsm.ru -
Автопрефиксер [1] — утилита нового поколения для добавления префиксов к экспериментальным свойствам из CSS 3. Она берёт с Can I Use [2] последние данные о префиксах и популярности браузеров, читает ваш файл стилей, находит свойства и значения, которым действительно нужны префиксы и добавляет их.
Вы просто пишите обычный CSS:
a {
transition: transform 1s
}
Автопрефиксер сам заменит нужные (и только нужные) свойства и значения (обратите внимание на -webkit-transform):
a {
-webkit-transition: -webkit-transform 1s;
-ms-transition: -ms-transform 1s;
-o-transition: -o-transform 1s;
-webkit-transition: transform 1s;
-o-transition: transform 1s;
transition: transform 1s
}
К сожалению текущие инструменты плохо решают задачу:
calc()).
Понятно, что языки препроцессоров не позволяют решить проблему полностью, нужен был фундаментально новый инструмент.
Это понимал и разработчик Stylus, TJ Holowaychuk, поэтому он начал разработку препроцессора нового поколения — Rework [4]. Это не отдельный язык, который компилировался в CSS (как Sass или Stylus), а именно препроцессор CSS-дерева:
В итоге новый инструмент был гораздо гибче — можно было действительно делать с CSS всё что угодно. Поэтому именно Rework лёг в основу Автопрефиксера.
Автопрефиксер работает поверх обычного CSS — так что вам не нужно всей командой мигрировать на новый язык. При этом он остаётся совместим с другими языками типа Sass и Stylus — нужно только запустить его после компиляции CSS.
Вам не нужно думать, нужна ли здесь примесь или нет — можно совсем забыть о префиксах. Автопрефиксер сам найдёт, что нужно менять — вы пишите обычный CSS с обычными свойствами и значениями.
Благодаря гибкости Rework Автопрефиксер может добавлять префиксы и для @keyframes, и для значений. Например, в Compass, очень трудно указывать transition-анимацию для свойств из CSS 3, типа — примесями это указать нельзя и приходится перечислять все возможные префиксы для transform.
Во-первых, чтобы не зависеть от свободного времени авторов, база данных Автопрефиксера обновляется автоматическими скриптами [5] с Can I Use [2], так что данные всегда остаются свежими.
Во-вторых, вы указываете те браузеры, которые поддерживаете (по умолчанию, как в Гугл, берутся 2 последние версии каждого браузера) — можно указать и по статистике глобального использования, например «больше 1 %».
В итоге в CSS будут только действительно нужные префиксы, файлы будут опрятные и их легко будет смотреть в Веб-инспекторе браузера.
Для Rails есть гем «autoprefixer-rails [6]» — вам нужно только подключить гем и префиксы будут сами добавляться в ваши CSS-файлы из app/assets/ и lib/assets. Достаточно добавить в Gemfile и дальше писать обычный CSS:
gem "autoprefixer-rails"
Благодаря гибкости Assets Pipeline, префиксы будут добавлять и к вашим стилям в Sass, и в Stylus. Браузеры можно указать в файле config/autoprefixer.yml:
browsers:
- "last 1 version"
- "> 1%"
- "ie 8"
Можно узнать, какие префиксы будут добавляться с помощью задачи rake autoprefixer:inspect.
Если вы используете Sprockets без Rails (например, вместе с Sinatra), то можно подключить Автопрефиксер к нему:
AutoprefixerRails.install(sprockets_env)
Можно обрабатывать CSS и без вообще Sprockets:
prefixed = AutoprefixerRails.compile(css))
Для компиляции в node.js можно использовать пакет с npm:
var autoprefixer = require('autoprefixer');
var prefixed = autoprefixer.compile(css);
Если же вам нужно обрабатывать CSS в браузере, то можно взять специальную сборку скрипта [7].
Если вы уже используете Rework, то можете подключить отдельный фильтр Автопрефиксера:
rework(css).
use( autoprefixer.filter(['> 1%', 'opera 12.5']) ).
use( rework.references() ).
toString();
Автопрефиксер можно интегрировать и с другими языками и системами с помощью отдельного приложения:
sudo npm install --global autoprefixer
autoprefixer *.css
Автор: Iskin
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/css/32275
Ссылки в тексте:
[1] Автопрефиксер: https://github.com/ai/autoprefixer
[2] Can I Use: http://caniuse.com/
[3] Prefix Free: http://leaverou.github.io/prefixfree/
[4] Rework: https://github.com/visionmedia/rework
[5] автоматическими скриптами: https://github.com/ai/autoprefixer/blob/master/updaters/props.coffee
[6] autoprefixer-rails: https://github.com/ai/autoprefixer-rails
[7] специальную сборку скрипта: https://raw.github.com/ai/autoprefixer-rails/master/vendor/autoprefixer.js
[8] Источник: http://habrahabr.ru/post/176909/
Нажмите здесь для печати.