CSS - 数値関数:初級者向けガイド

こんにちは、未来のCSS魔法使いさんたち!今日は、CSSの数値関数の世界に踏み出す興奮的な旅を楽しみましょう。心配しないでください。これまで一度もコードを書いたことがない方でも、あなたの親切なガイドとして私はここにいます。ステップバイステップで進めましょう。このチュートリアルの終わりには、CSSの数値関数を使うことでどれだけ多くのことができるか驚くことでしょう!

CSS - Math Functions

基本的な算術関数

まずは基本から始めましょう。CSSは、ウェブページのデザインを簡単にするために、いくつかの簡単な算術関数を提供しています。これらの関数を使うと、CSSコード内で直接計算を行うことができます。

calc() 関数

calc() 関数はCSSの数値関数の中のスイスアーミーナイフです。基本的な算術演算をCSS内で行うことができます。例を見てみましょう:

.box {
width: calc(100% - 20px);
}

この例では、クラス名が "box" の要素の幅を、親要素の幅の100%から20ピクセルを引いた値に設定しています。これは、異なるスクリーンサイズに対応するレスポンシブルなレイアウトを作成する際に非常に便利です。

以下に分解します:

  • 100% は親要素の全幅を表します。
  • -20px はその幅から20ピクセルを引きます。
  • calc() 関数はこの計算を行ってくれます。

calc() では、加算(+)、減算(-)、乗算(*)、除算(/)の4つの基本的な算術演算をすべて使用できます。別の例を見てみましょう:

.column {
width: calc(33.33% - 10px);
margin-right: calc(10px * 2);
}

この場合、3列のレイアウトを作成しています。各列は幅の3分の1(33.33%)から10ピクセルを引いた値を持ち、右マージンはスペースの2倍のサイズです。

比較関数

基本を理解したところで、比較関数に進みましょう。これらは、異なる条件に対応するレスポンシブルデザインを作成するのに非常に便利です。

min() 関数

min() 関数は、リスト内の値のうち最も小さいものを返します。要素のサイズに最大限の制限を設けるのに最適です。例えば:

.responsive-text {
font-size: min(5vw, 30px);
}

これは、フォントサイズをビューポートの幅の5%に設定しますが、30ピクセルを超えることはありません。大きなスクリーンでは文字が太大になるのを防ぐのに役立ちます。

max() 関数

max()min() と逆の動作をします。リスト内の値のうち最も大きいものを返します。以下のように使用します:

.responsive-image {
width: max(300px, 50%);
}

これは、画像が常に少なくとも300ピクセルの幅を持つことを保証しますが、50%のコンテナよりも小さい場合はそのままです。

clamp() 関数

clamp() 関数は min()max() の両方を兼ねています。3つの値を取ります:最小値、好みの値、最大値。以下の例を見てみましょう:

.responsive-element {
width: clamp(200px, 50%, 500px);
}

これは、幅をコンテナの50%に設定しますが、200ピクセル未満または500ピクセルを超えることはありません。

高度なCSS数値関数

基本をカバーしたところで、CSSスキルを次のレベルに引き上げるためのより高度な関数に進みましょう。

abs() 関数

abs() 関数は、数値の絶対値を返します。アニメーションや常に正の値を保証したい場合に便利です。以下の例を見てみましょう:

.box {
transform: translateX(abs(var(--x)));
}

これは、--x カスタムプロパティの値に基づいてボックスを水平に移動させ、常に正の方向に移動するようにします。

round() 関数

round() 関数は、数値を最も近い整数に丸めます。グリッドに値を固定するのに便利です。以下の例を見てみましょう:

.grid-item {
width: calc(round(100% / 3));
}

これは、3列のレイアウトを作成し、各列の幅を最も近い整数に丸めます。

階段状の値関数

階段状の値関数は、値がスムーズに変わるのではなく、一定のステップで変わるようにします。これにより、興味深い視覚効果を作成できます。

mod() 関数

mod() 関数は、除算後の余りを返します。これは繰り返しパターンを作成するのに便利です。以下の例を見てみましょう:

.striped-background {
background-color: hsl(0, 0%, mod(var(--i) * 10, 100)%);
}

これは、インデックス(--i)に基づいて縞模様の背景色を作成し、10本ごとに繰り返します。

三角関数

最後に、三角関数について触れましょう。これらは、複雑なアニメーションやレイアウトを作成するのに非常に強力です。

sin()cos() 関数

sin()cos() 関数は、角度の正弦と余弦を返します。これらはアニメーションによく使用されます。以下の簡単な例を見てみましょう:

@keyframes orbit {
from {
transform: rotate(0deg) translateX(100px) rotate(0deg);
}
to {
transform: rotate(360deg) translateX(100px) rotate(-360deg);
}
}

.orbiting-element {
animation: orbit 5s linear infinite;
}

これは、要素が中心点を中心に円運動を行うアニメーションを作成します。

関数リファレンス表

ここに、カバーしたすべてのCSS数値関数の簡単なリファレンス表を示します:

関数 説明
calc() 基本的な算術演算を行う calc(100% - 20px)
min() 最小値を返す min(5vw, 30px)
max() 最大値を返す max(300px, 50%)
clamp() 最小値と最大値の間に値を固定する clamp(200px, 50%, 500px)
abs() 絶対値を返す abs(var(--x))
round() 最も近い整数に丸める round(100% / 3)
mod() 除算後の余りを返す mod(var(--i) * 10, 100)
sin() 角度の正弦を返す sin(45deg)
cos() 角度の余弦を返す cos(45deg)

それでは、ここまでを終了しました!多くの内容をカバーしましたが、これらをマスターする鍵は練習です。これらをCSSに取り入れて、さまざまな組み合わせを試してみると、簡単に素晴らしい、レスポンシブルなデザインを作成できるようになります。快適なコーディングを!

Credits: Image by storyset