Sassのextendを使って、グラデーション設定を使いまわしましょう。
Sass
$experimental-support-for-svg: true; .gradient { @include background-image(linear-gradient(top, #fff, #ccc)); @include filter-gradient(#fff, #ccc, vertical); } .box1 { @extend .gradient; width: 100px; } .box2 { @extend .gradient; width: 300px; }
「.gradient」という汎用クラスを定義し、その後それらをextendしています。
ちなみに1行目の宣言でsvgサポートを有効にしています。
これによりグラデーションを画像出力して多少古いIEでも表示されるようにすることが狙いです。
出力されるCSS
.gradient, .box1, .box2 { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2NjY2NjYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc)); background-image: -webkit-linear-gradient(top, #ffffff, #cccccc); background-image: -moz-linear-gradient(top, #ffffff, #cccccc); background-image: -o-linear-gradient(top, #ffffff, #cccccc); background-image: linear-gradient(top, #ffffff, #cccccc); *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFCCCCCC'); } .box1 { width: 100px; } .box2 { width: 300px; }
svgサポートを有効にした結果、グラデーションのData-URI画像も出力される形になり、長大なコードが出力されますが、これがクラスごとに入るのはたまったものではないと思います。
extendを使い「.gradient」のセレクタに「.box1」と「.box2」が追加される形になるため、グラデーション設定の記述量が大幅に減ることになります。