今回は、
もちろん、
カラー関数で色の変更に柔軟に対応する
CSSにおいて、
たとえばデザインをする際、
- 「色相を少しずらす」
- 「明度を少し明るくする」
といった形で色を作ることがあるでしょう。
しかし、
LESSではそのようなケースに柔軟に対応するために、
カラー関数では、
- 明度
(hue) - 彩度
(saturation) - 色相
(lightness)
さらに
- 透明度
(alpha)
を加えた4種類の値を、
カラー関数の使い方
まずは、
lighten(@color, 10%); //@colorより10%“明度が高い”色を計算する
darken(@color, 10%); //@colorより10%“明度が低い”色を計算する
saturate(@color, 10%); //@colorより10%“彩度が高い”色を計算する
desaturate(@color, 10%); //@colorより10%“彩度が低い”色を計算する
spin(@color, 10); // @colorより10度“色相が大きい”色を計算する
spin(@color, -10); // @colorより10度“色相が小さい”色を計算する
※ spinのみ、
使用例として、
上から下に、
@color: #FF3300;
#foo {
background-image: -webkit-gradient(
linear,
left bottom,
left top,
from(@color),
to(darken(@color, 20%))
);
}
CSSでは本来、
なぜこのような記述をしているのでしょうか?
もちろん、
しかし、
再度基準色とその20%暗くした色を計算して宣言しなおす必要があります。
darken関数を使うのは、
これをmixinとして利用し、
「明度と彩度は同じで、
といったデザインにも有効です。
透明度を調整する
筆者の利用頻度が一番高いカラー関数は
これはカラー関数の中で最重要項目です!
CSS3では、
- rgb(255,255,0) → rgba(255,255,0,0.
5)
最後の
なぜ透明度を調整するこの関数の利用頻度が高いかといえば、
fadein(@color, 10%); // @colorより10%“透明度が高い”色を計算する
fadeout(@color, 10%); // @colorより10%“透明度が低い”色を計算する
fade(@color, 50%); // @colorの50%の透明度を持つ色を計算する
最後の
これにより、
しかし、
そこで、
CSSでは
- #FF3300
- →(rgb値に変換)
- →rgb(255,51,0)
- →(50%の透過)
- →rgb(255,51,0,0,5);
一方、
- #FF3300
- →(50%の透過)
- →fade(#FF3300,50%)
ツールもいらず、
fadein()、
ちなみに、
Math関数で小数点以下の数値を効率的に扱う
CSSでは、
小数点以下の数値に対して切り上げ/
round(1.67); // 1.67の小数点以下1桁を四捨五入 → 2
ceil(2.4); // 2.4の小数点以下1桁を切り上げ → 3
floor(2.6); // 2.4の小数点以下1桁を切り下げ → 2
percentage(0.5); // 0.5をパーセントに変更 → 50%
これらは普段使う場面を想像しにくいかもしれません。
「round(1.
こういった関数は
引数ではどんな数字が渡されるかわからないため、
それらをCSSの値として用いるためには
- 「1つ目のオブジェクトは34pxで」
- 「それ以外のオブジェクトは33px」
などの計算が必要になりますが、
//LESS
@sectionWidth: 100px;
@cells: 3;
ul {
width: @sectionWidth;
li {
width: floor(@sectionWidth/@cells);
&:first-child {
width: ceil(@sectionWidth/@cells)
}
}
}
/* Compiled CSS */
ul {
width: 100px;
}
ul li {
width: 33px;
}
ul li:first-child {
width: 34px;
}
※わかりやすくするため、
今回の例では、
そうしたmixinの作り方は、
今回ご紹介した色や数値の計算は、
これらは今後mixinを作っていく段階でキモとなってきます。ぜひ覚えておいてください。
次回は宣言された文字列を編集・