Sassのextendを使った記法を広めたいのでまたまた応用方法をご紹介します。
改善前CSS
.box1 { width: 300px; padding: 10px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; } .box2 { width: 400px; padding: 15px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; } .box3 { width: 500px; padding: 20px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px; }
ベンダープレフィックスの要る box-sizing や border-radius を多用するとこのような同じ記述の連続になりがちです。
表示には何ら問題ないですがCSSソースに無駄がありますのでコンパクト化してしまいましょう。
Sass
.box-sizing { @include box-sizing(border-box); } .border-radius4 { @include border-radius(4px); } .border-radius5 { @include border-radius(5px); } .box1 { width: 300px; padding: 10px; @extend .box-sizing; @extend .border-radius4; } .box2 { width: 400px; padding: 15px; @extend .box-sizing; @extend .border-radius4; } .box3 { width: 500px; padding: 20px; @extend .box-sizing; @extend .border-radius5; }
box-sizing や border-radius だけを適用したextend用のクラスに分けてしまいました。
各boxからはそのクラスをextendする形です。
border-radiusなど数値指定のプロパティもこのように分けておくことで、クラスごとに角丸の数値がまちまちにならずフォーマットを確定しておけるメリットもあります。
出力されるCSS
.box-sizing, .box1, .box2, .box3 { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .border-radius4, .box1, .box2 { -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; } .border-radius5, .box3 { -webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px; } .box1 { width: 300px; padding: 10px; } .box2 { width: 400px; padding: 15px; } .box3 { width: 500px; padding: 20px; }
改善前のCSSより全体のサイズが減りました。