前回、ボタンにカーソルを乗せるとふわっと拡がる例を見ました。あの「ふわっ」の正体がtransitionです。
何もつけないと「パッ」と切り替わる
まずはtransitionが無いとどうなるか見てみましょう。
色も角の丸みも、カーソルを乗せた瞬間にカクッと切り替わります。
transitionをつけると「ふわっ」に変わる
同じCSSに、transitionを1行足すだけです。
同じ変化なのに、印象がまったく違いますね。
transitionの書き方
<div class="box">ホバーしてみて</div>.box {
transition: background-color 0.4s ease;
}スペース区切りで、こういう意味を持ちます。
| 部分 | 役割 |
|---|---|
background-color | 何を変化させるか(プロパティ名) |
0.4s | どれくらいの時間をかけるか |
ease | 変化のリズム(イージング。後述) |
複数のプロパティを同時になめらかにしたいときは、カンマで区切って並べます(上の例のbackground-color 0.4s ease, border-radius 0.4s easeのように)。全部まとめてなめらかにしたいときは、プロパティ名の代わりにallも使えます。
<div class="box">ホバーしてみて</div>.box {
transition: all 0.4s ease;
}イージング:変化のリズム
easeの部分を変えると、変化の「勢いのつき方」が変わります。
| 値 | 動きの感じ |
|---|---|
ease | ゆっくり始まって、ゆっくり終わる(既定値・自然な感じ) |
linear | 最初から最後まで一定の速さ |
ease-in | ゆっくり始まって、勢いよく終わる |
ease-out | 勢いよく始まって、ゆっくり終わる |
時間はどれくらいがいい?
0.4sのsは秒(seconds)のこと。0.2sなら0.2秒です。この数字ひとつで印象が大きく変わります。
| 時間 | 印象 |
|---|---|
| 0.1s前後 | 速すぎて、変化に気づきにくい |
| 0.2〜0.3s | キビキビして心地よい(ボタンなどの定番) |
| 0.4〜0.6s | ゆったり・上品(カードや大きめの要素向き) |
| 1s以上 | 「待たされている」と感じやすい |
迷ったら0.2〜0.3秒から始めて、実際に触りながら調整しましょう。「気持ちいい」と感じる長さは、動かす部品の大きさによっても変わります。
遅らせて始めるtransition-delay
時間の値を2つ書くと、2つ目は「始めるまでの待ち時間」(ディレイ)になります。
<div class="box">ホバーしてみて</div>.box {
transition: background-color 0.4s 0.2s ease;
}この例では「カーソルが乗って0.2秒待ってから、0.4秒かけて色が変わる」という動きになります。複数の要素の動き出しを少しずつずらして、順番に変化させたいときに活躍します。
transitionできないプロパティもある
transitionがなめらかにできるのは、中間の状態が計算できる値だけです。色なら「紫とオレンジの中間色」、大きさなら「160pxと200pxの間の180px」が作れるので、なめらかに変化できます。
一方、display: noneとdisplay: blockのような中間が存在しない値は、transitionをつけてもパッと切り替わります。
| なめらかにできる | できない(パッと切り替わる) |
|---|---|
color・background-color(色) | display(表示/非表示) |
width・height・font-size(大きさ) | font-family(フォントの種類) |
opacity(透明度)・transform(変形) |
このレッスンのまとめ
transitionをつけると、値の変化がなめらかになる- 書き方は
プロパティ名 時間 イージング allで全プロパティ、カンマ区切りで複数指定できるtransitionは変化前の要素につける