0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CSSマスターへの道「Transition」

Last updated at Posted at 2026-01-04

Day 15 です。

今日から Phase 3: 動きとインタラクションの週 に入ります。

これまでの 2 週間で作ったデザインは、まだ「静止画」です。
今日からは、そこに「時間」の概念を取り入れ、命を吹き込みます。

最初のステップは transition(トランジション/遷移)
「A の状態から B の状態へ、時間をかけて滑らかに変化させる」技術です。これがあるだけで、Web サイトの使い心地(UX)は大きく向上します。


はじめに:0 か 1 か、ではなく「余韻」を作る

CSS でホバー効果(:hover)をつけた時、初期状態では色が「パッ」と一瞬で切り替わりますよね?
これは機械的で、少し安っぽい印象を与えることがあります。

transition を使うと、色が「じわっ」と変わったり、ボタンが「ふわり」と浮き上がったりします。
この 「変化の過程」を補間する のが今日のテーマです。


🎯 本日の目標

  1. 書き方の基本transition プロパティの省略形(プロパティ、時間、イージング)をマスターする。
  2. 置く場所のルール:hover の中ではなく、元のクラス に書く理由を理解する。
  3. イージング(緩急)easelinearease-in-out の違いを知り、心地よい動きを作る。

📝 ミッション内容

以下の 2 つのインタラクティブな要素を作ってください。

  • Mission 1: 「Smooth Button」
    • ホバーすると、背景色が変わり、同時にサイズが少し大きくなるボタン。
    • 変化にかかる時間は「0.3 秒」。
  • Mission 2: 「Elastic Card」
    • ホバーすると、上に浮き上がりながら影が濃くなるカード。
    • 「行き(ホバー時)」と「帰り(マウスを離した時)」で変化のスピードを変えてみる(応用)。

💻 実装サンプル

正解例

See the Pen CSSマスターへの道「Transition」 by サカツ (@saka2jp) on CodePen.


🧠 解説と重要ポイント

1. 書き方の解剖図

/* ショートハンド(省略形) */
transition: <プロパティ> <時間> <イージング> <遅延(省略可) >;

/* 例 */
transition: background-color 0.5s ease-in-out;
  • プロパティ: all にすると全部まとめて変化します。個別に colortransform と書くとパフォーマンスが良いです。
  • 時間: 0.3s (0.3 秒) や 300ms (300 ミリ秒) と書きます。Web の UI では 0.2s 〜 0.4s が心地よいとされています。
  • イージング (Easing): 動きの「加減速」です。
    • linear: 一定速度(機械的な動き)。
    • ease: 開始と終了が滑らか(デフォルト)。
    • ease-out: 素早く始まって、ゆっくり止まる(ふわりと停まる感じ)。

2. なぜ :hover に書かないのか

.btn:hover { transition: ... } と書いてしまうと、「マウスを乗せた時」しかアニメーションしません
マウスを離した瞬間、アニメーションなしで「バチッ」と元の位置に戻ってしまいます。
「元のクラス(.btn)」 に書くことで、行きも帰りもスムーズになります。


💡 応用:プロパティごとに時間をずらす

transition-delay を使うと、複数の変化に時間差をつけることができます。
例えば、「まず背景が変わってから、そのあと文字色が変わり、最後に枠線が広がる」といった凝った演出です。

.complex-box {
  background: white;
  color: black;
  border: 2px solid transparent;

  /* 
     1. background は すぐ(0s) 始まる
     2. color は 0.2s 待ってから始まる
  */
  transition: background-color 0.3s ease 0s, color 0.3s ease 0.2s;
}

.complex-box:hover {
  background: black;
  color: white;
}

これを使うと、洗練された印象を与えられます。


おわりに

transition: all 0.3s ease;
この 1 行を覚えておいてください。
ボタン、リンク、カードなど、クリックできる要素にはこれを入れておくだけで、サイトのクオリティが向上します。

さて、transition は「A 地点から B 地点へ」の単純な往復でした。
次回は、 「Animation (キーフレーム)」 です。
「A → B → C → A」のように、もっと複雑で自由な動きを作り出します。CSS だけでローディングアニメーションを作ってみましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?