CSSを効率良く楽に記述できるメタ言語「LESS」の書き方
それでは、LESSの書き方と、その書き方がどういうCSSだと解釈されるのかを見ていきましょう。とても便利にスタイルが書けることがお分かり頂けるはずです。1.変数を使って、値の指定を楽にできるLESSの書き方
@base-color: #4D926F; /* ←変数を定義 */
h1 {
color: @base-color;
padding: 0.3em;
}
h2 {
color: @base-color;
font-weight: normal;
}
ここでは「base-color」という変数を用意して、「#4D926F」という値(色)を格納しています。その色を、h1要素やh2要素に適用しています。変数名は、先頭を「@」記号にして自由に付けられます。上記のLESSソースは、以下のCSSソースを記述した場合と同じに解釈されます。
h1 {
color: #4D926F;
padding: 0.3em;
}
h2 {
color: #4D926F;
font-weight: normal;
}
複数の要素に同じ装飾を適用したいとき、このように変数を使うと、装飾内容を変更したい場合でも、書き換えるのは変数部分のたった1箇所で済むメリットがあります。2.複数のスタイルを関数のようにまとめて、装飾を効率良く指定できるLESSの書き方
.kadomaru (@radius: 5px) {
-webkit-border-radius: @radius; /* Chrome,Safari */
-moz-border-radius: @radius; /* Firefox */
border-radius: @radius; /* CSS3 */
border: solid green 2px;
}
h1 {
.kadomaru;
}
h2 {
.kadomaru(10px);
}
ボックスの角を丸くする場合、-webkit-や-moz-などのベンダープレフィックスを付けて、同じ値を何度も記述しなければなりません(詳しくは、記事「画像を使わずにCSSだけで角を丸くする方法」をご参照下さい)。ここでは「kadomaru」という名称の関数(のようなもの)を用意し、その中にボックスの角を丸くする記述を含めています。その関数をh1要素やh2要素から呼び出して装飾しています。こうすると、同じ記述を何度も書かずに済み、手間も省けますしソースも読みやすくなります。上記のLESSソースは、以下のCSSソースを記述した場合と同じに解釈されます。
h1 {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
border: solid green 2px;
}
h2 {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
border: solid green 2px;
}
引数を特に指定しない場合は、上記のh1要素のように、デフォルトの「5px」を指定したことになります(デフォルトの値は、関数を定義したときに記述しておけます)。引数に「10px」を指定したh2要素では、その「10px」がスタイルの値として使われます。このように、関数と変数を利用して効率良くCSSが記述できます。3.計算式を使って値をずらすことで、装飾を効率良く管理できるLESSの書き方
@base-color: #888888; /* 変数にベースの色を格納 */
@base-border: 2px; /* 変数にベースの太さを格納 */
@base-padding: 0.5em; /* 変数にベースの広さを格納 */
h1 {
color: @base-color + #222222; /* 明るく */
border: @base-border * 2; /* 2倍に(太く) */
padding: @base-padding + 0.3; /* 広く */
}
h2 {
color: @base-color - #333333; /* 暗く */
border: @base-border / 2; /* 半分に(細く) */
padding: @base-padding - 0.2; /* 狭く */
}
変数に入れた「太さ」や「色」の数値は、四則演算が可能です。色を足し算すれば明るくでき、色を引き算すれば暗くできます。ベースの「太さ」をかけ算で太くしたり、割り算で細くしたりもできます。ここでは解説を割愛しますが、色相・明度・彩度・透明度などを個別に割合で調節したり、小数を整数に丸める数学関数なども用意されています。上記のLESSソースは、以下のCSSソースを記述した場合と同じに解釈されます。
h1 {
color: #aaaaaa; /* =#888888 + #222222 */
border: 4px; /* =2px × 2 */
padding: 0.8em; /* =0.5em + 0.3 */
}
h2 {
color: #555555; /* =#888888 - #222222 */
border: 1px; /* =2px ÷ 2 */
padding: 0.3em; /* =0.5em - 0.2 */
}
「h1要素の装飾」と「h2要素の装飾」はまったく異なるものですが、ベースにしている値(太字部分)は同じです。この「ベースの変数の値」を書き換えるだけで、(変化量を維持したまま)両者の装飾をまとめて修正できるので、とても便利です。4.CSSの階層構造を把握しやすく書ける、入れ子を使ったLESSの書き方
div#header {
background-color: #ccffcc;
h1 {
font-size: 26px;
font-weight: bold;
}
p {
font-size: 12px;
a {
text-decoration: none;
&:hover {
color: red;
}
}
}
}
上記のように、入れ子構造を使ってスタイルを定義できます。HTMLも各要素を入れ子構造を使って記述しますから、CSSも同様の方法で記述できると分かりやすいでしょう。上記は、div要素の内側にh1要素とp要素があり、p要素の内側にa要素があり、a要素の内側にhover疑似クラスがあり……という階層構造になっています。上記のLESSソースは、以下のCSSソースを記述した場合と同じに解釈されます。
div#header {
background-color: #ccffcc;
}
div#header h1 {
font-size: 26px;
font-weight: bold;
}
div#header p {
font-size: 12px;
}
div#header p a {
text-decoration: none;
}
div#header p a:hover {
color: red;
}
CSSソースだと、上記のように上位階層のセレクタ(要素名など)を何度も繰り返して記述しなければなりません。LESSだと、入れ子構造が使えることで分かりやすく記述できます。さて、上記のように「LESS」を使えばCSSを効率良く楽に記述できますが、このままではブラウザは認識できません。最後に、この「LESS」をブラウザにCSSだと認識させる方法をご紹介致します。







