- 1つ1つ手で記述している
- Emmetで展開した時、自動で出力されるのを利用している
.test{
-webkit-box-shadow: ;
-moz-box-shadow: ;
box-shadow: ;
}
- Compassのmixinを利用している
.test{
@include box-shadow(0 0 3px #ccc);
}
- プロパティを記述する際に、ベンダープリフィックスが必要か否かを判断しなければならない
- よく例に上げられるborder-radiusはもはやベンダープリフィックスが必要ない
- ベンダープリフィックス付きのプロパティが並ぶと見づらい
/* Emmetで入力した例 */
.test{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: 0 0 3px #ccc;
-moz-box-shadow: 0 0 3px #ccc;
box-shadow: 0 0 3px #ccc;
}
- ブラウザのバージョンアップによってベンダープリフィックスが不必要になった場合に、1つ1つ消していかなければならない
- (Compassの場合)ミックスインを覚えなければならないし、ぱっと見よく分からない。
- ミックスインが古くなっている場合も…。
Can I use...(HTML5/CSS3のブラウザ別互換表)のデータを基に、CSSファイル内のプロパティにベンダープリフィックスを付けたり取ったりしてくれる
配布元 = github ai / autoprefixer
.button{
box-sizing: border-box;
}
.button{
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
- autoprefixerコマンドを実行
- Sublime Textプラグイン https://github.com/sindresorhus/sublime-autoprefixer
- Brackets/Edge Codeエクステンション https://github.com/mikaeljorhult/brackets-autoprefixer
- Compassに組み込む
- Prepros App
- Grunt(grunt-autoprefixer)
$ autoprefixer *.css
デフォルト("> 1%", "last 2 versions", "firefox 24", "opera 12.1") : 世界の統計においてシェア1%以上・最新と1つ前のバージョン・Firefox 24(ESR)・Opera 12.1
"last 1 versions", "ff 24", "ie 10", "ie 9", "ie 8" : 最新バージョンのブラウザ・Firefox 24(ESR)・IE8〜10
- 編集する度にAutoprefixerを自動実行してくれる
- 編集元のファイルにはベンダープリフィックスの記述がなく、ベンダープリフィックスに悩まされることがない。
- ベンダープリフィックスを付けず、Sass/Lessを書く
- GruntでSass/Lessのコンパイルを行う
- autoprefixerタスクでベンダープリフィックスの処理を行う
- link要素でCSSを読み込む
- ベンダープリフィックスを付けず、CSSを書く
- autoprefixerタスクでベンダープリフィックスの処理を行い、新しいCSSを出力する
- link要素でベンダープリフィックスが付いた方のCSSを読み込む
https://raw.github.com/hideki-a/generator-skyward/master/app/templates/Gruntfile.coffee
ベンダープリフィックスを付けたり取ったりする処理が行われても、CSS/Sassの記述位置が問題なく表示されるようになった
(メモ:※grunt-autoprefixerはv0.6.0で対応。12/23か24にはリリースの見込み)