Sass: Syntactically Awesome Style Sheets
scssはCSSのメタ言語Sassの記法一つです。どのあたりが上位言語かというと、CSSをより便利に記述できるような記法と組み込み関数を増やして、scssファイルをコンパイルすることでcssファイルを作成するあたりが、上位言語です。
CSSは元から大して変数、制御構文などがなくとも十分使えるものでscssならではのコードはなかなか思いつきません(色を変数化してパレット風にするのは便利なくらい)。この記事ではhsl表記の色と組み合わせることによってscssならではのコードを紹介します。
上のJSFiddleのCSSを構成しているscssコードが次です。16行目からが特にscssです。変数としての色$baseの色相を組み込み関数adjust-hue()でイテレータに合わせて動かし、イテレータの番号を名前に含むクラス名のdivの高さを変更しています。10行少々のコードで生のCSSでは長大になりそうな離散的グラデーションを実現できました。また、変数$base, $diffの変更だけで色相の起点、刻み幅を変更可能で多少のデザイン変更ならすぐに対応できます。
.flex-row {
display: flex;
height: 8em;
width: 30em;
}
.col-box {
display: flex;
flex-direction: column;
}
.box {
width: 2.25em;
border: solid darken(#fff, 20%);
}
$base: hsl(0, 100%, 50%);
$diff: 30;
@for $i from 1 through 7 {
.box-l-#{$i} {
@extend .box;
background: adjust-hue($base, ($i - 1) * $diff);
height: #{$i}em;
}
.box-r-#{$i} {
@extend .box;
background: adjust-hue($base, -($i - 1) * $diff);
height: calc(100% - #{$i}em);
}
}