Skip to content

もっと CSS を使いこなすための応用編(前編)

公開日:December 16, 2024更新日:December 16, 2024
HtmlCSS📄

この章では、CSS の応用的な使い方について学びます。前編では、カスタムプロパティとアニメーションについて紹介します。これらの機能を使いこなせば、より効率的で表現力豊かなコーディングができるようになります。

1. カスタムプロパティ(CSS 変数)で効率化

カスタムプロパティとは、CSS の値を格納できる変数のことです。カスタムプロパティを使うと、値を一元管理できるため、コードの保守性や可読性が向上します

-- から始まる変数名

カスタムプロパティは、-- で始まる名前で定義します。値には、色、サイズ、フォント名など、あらゆる CSS の値を指定できます。

css
:root {
    --main-color: #0077CC;
    --base-font-size: 16px;
    --base-font-family: Arial, sans-serif;
}

:root は、HTML のルート要素(<html>)を表す擬似クラスです。:root にカスタムプロパティを定義することで、スタイルシート全体でその変数を使うことができるようになります。

var() 関数で変数を使う

カスタムプロパティの値を使うには、var() 関数を使います。

css
h1 {
    color: var(--main-color);
    font-size: var(--base-font-size);
    font-family: var(--base-font-family);
}

.button {
    background-color: var(--main-color);
    font-size: var(--base-font-size);
    font-family: var(--base-font-family);
}

この例では、<h1>.button のスタイルに、それぞれカスタムプロパティの値を適用しています。

使い回しで楽々!

カスタムプロパティの最大のメリットは、値を一元管理できることです。例えば、サイトのメインカラーを変更したい場合、カスタムプロパティの値を変更するだけで、その色を使っているすべての要素にスタイルが反映されます。

css
:root {
    /* メインカラーを青から赤に変更 */
    --main-color: #CC0000;
}

もしカスタムプロパティを使っていなかったら、<h1>.button など、すべての箇所のカラーコードを変更しなければなりません。カスタムプロパティを使えば、そのような手間を省くことができ、修正漏れなどのミスも防げます

2. アニメーションで動きをつけよう

CSS アニメーションを使うと、要素の色やサイズ、位置などを滑らかに変化させることができます。アニメーションは、ウェブサイトに動きを加え、ユーザーエクスペリエンスを向上させるために効果的です。

transition でなめらかに変化

transition プロパティを使うと、要素のスタイルが変化したときに、その変化をアニメーションさせることができます

css
.box {
    width: 100px;
    height: 100px;
    background-color: red;
    transition: width 0.5s ease-in-out;
}

.box:hover {
    width: 200px;
}

この例では、.boxtransition: width 0.5s ease-in-out; を指定しています。これは、width プロパティの値が変化したときに、0.5 秒かけて変化をアニメーションさせるという意味です。ease-in-out は、アニメーションの変化の仕方(イージング)を指定しています。

.box:hover は、.box にマウスカーソルが乗ったときのスタイルを指定しています。ここでは、width200px に変更しているので、.box にマウスを乗せると、幅が 0.5 秒かけて 200px に変化します。

animation で複雑な動きを実現

animation プロパティを使うと、より複雑なアニメーションを定義することができます。animation プロパティでは、キーフレームを使ってアニメーションの開始から終了までの変化を指定します。

css
.box {
    width: 100px;
    height: 100px;
    background-color: red;
    animation: move 2s ease-in-out infinite alternate;
}

@keyframes move {
    0% {
        transform: translateX(0);
    }
    50% {
        transform: translateX(100px);
    }
    100% {
        transform: translateX(50px);
    }
}

この例では、.boxanimation: move 2s ease-in-out infinite alternate; を指定しています。これは、move という名前のキーフレームアニメーションを 2 秒間隔で実行し、ease-in-out のイージングを適用し、無限に (infinite) 往復 (alternate) させるという意味です。

@keyframes move で、move アニメーションのキーフレームを定義しています。キーフレームでは、アニメーションの進行状況をパーセンテージで指定し、その時点でのスタイルを記述します。この例では、0%(開始時)に translateX(0)(移動なし)、50%(中間)に translateX(100px)(右に 100px 移動)、100%(終了時)に translateX(50px)(右に 50px 移動)を指定しています。

キーフレームって何?

キーフレームとは、アニメーションの途中の状態を定義したものです。@keyframes ルールを使って、キーフレームに名前を付けて定義します。

css
@keyframes animation-name {
    from {
        /* 開始時のスタイル */
    }
    to {
        /* 終了時のスタイル */
    }
}

@keyframes animation-name {
    0% {
        /* 開始時のスタイル */
    }
    50% {
        /* 途中のスタイル */
    }
    100% {
        /* 終了時のスタイル */
    }
}

fromto は、それぞれアニメーションの開始時(0%)と終了時(100%)を表します。0% から 100% の間の任意のパーセンテージで、途中の状態を細かく指定することもできます。