さらに条件分岐や繰り返し処理をすることもできる。これには頭に「@」を付けた命令文を記述して、JavaScriptなどのように比較演算子などを記述する。
特に繰り返し文は、メニューなどでそれぞれ違ったIDなどを持った要素にCSSを設定したいといったときに威力を発揮する。
$type: moge; p { @if $type == hoge{ color: blue; } @else if $type == huga{ color: red; } @else if $type == move{ color: green; } @else { color: black; } }
↓コンパイル
p { color: green; }
@for $i from 1 through 5 { .nav-#{$i} { width: 2em * $i; } }
↓コンパイル
.nav-1 { width: 2em; } .nav-2 { width: 4em; } .nav-3 { width: 6em; } .nav-4 { width: 8em; } .nav-5 { width: 10em; }
@each $str hoge, huga, moge, moga{ .#{$str }-name{ background-image: url('/images/#{$str}.png'); } }
↓コンパイル
.hoge-name { background-image: url("/images/hoge.png"); } .huga-name { background-image: url("/images/huga.png"); } .moge-name { background-image: url("/images/moge.png"); } .moga-name { background-image: url("/images/moga.png"); }
$i: 1; @while $i < 5 { .item-#{$i} { width: 2em * $i; } $i: $i + 1; }
↓コンパイル
.item-1 { width: 2em; } .item-2 { width: 4em; } .item-3 { width: 6em; } .item-4 { width: 8em; }
SassでCSSをコンパイルする際、オプションを幾つか設定できる。オプションによって、可読率と圧縮率(実行速度)がトレードオフになるので、コーディング/デバッグ時と実行時で使い分ける必要があるだろう。変換の仕方を変える4つの各オプションは以下の通り、変換されたCSSを見比べてほしい。
#main { color: #fff; background-color: #000; } #main p { width: 10em; } .content{ font-size: 10em; font-weight: bold; text-decoration: underline; }
#main { color: #fff; background-color: #000; } #main p { width: 10em; } .content{ font-size: 10em; font-weight: bold; text-decoration: underline; }
#main { color: #fff; background-color: #000; } #main p { width: 10em; } .huge { font-size: 10em; font-weight: bold; text-decoration: underline; }
#main{color:#fff;background-color:#000}#main p{width:10em}.huge{font-size:10em;font-weight:bold;text-decoration:underline}
ファイルサイズを極限まで削減したい場合は、「:compressed」を利用したい。
本稿で紹介し切れていないSassの機能もまだまだ存在する。しかし、ここで紹介した機能だけでも相当強力であることが分かるはずだ。さらなるSassの機能については、公式リファレンスを参考にしてほしい。
次回はSassの環境構築とDreamweaverでSassを利用する方法について紹介する。
本稿で紹介したscssファイルと変換したcssファイルを、GitHubに置いておいたので、どのように展開されているかを確認してみてほしい。本連載で作成したサンプルのコードやファイルは全てGitHubからダウンロードできる。
Copyright © ITmedia, Inc. All Rights Reserved.