今回はtransition
でプロパティ(transition-property
)を複数指定したいときの書き方を解説します。
transition-propertyを複数指定するときの書き方
結論から言うと以下のような書き方になります。
.btn {
/* プロパティ→秒数の順番でカンマ区切りで指定 */
transition: opacity 300ms, color 300ms;
color: #333;
}
.btn:hover {
color: #fff;
opacity: 0.8;
}
プロパティごとに毎回秒数を指定する必要がある点に気をつけましょう。「秒数が同じだから省略」とかはできません。
大体の場合はtransition
をかけるプロパティと秒数だけ指定すれば事足りると思うので、上のような書き方でokです。
transitionをショートハンドで書くときの書き方
transition
をショートハンドで書く場合、以下のような順番になります。()内はデフォルト値です。
- transition-property(all)
- transition-duration(0)
- transition-timing-function(ease)
- transition-delay(0)
そして重要なのがtransition-property
とtransition-duration
ですね。
transition-proprety
にはtransition
をかけたいCSSプロパティを指定します。CSSプロパティは普通にそのまま書けばokです。
省略した場合はall
がデフォルト値なので勝手に全プロパティにtransition
がかかります。
/* 全プロパティにtransition(allが補完される) */
.btn1 {
transition: 300ms;
}
/* 1つだけ指定 */
.btn2 {
transition: opacity 300ms;
}
/* 複数指定 */
.btn3 {
transition: opacity 300ms, background-color 500ms;
}
ただし、transition-property
を省略すると意味わからないバグに繋がることが結構よくあるので、必ず毎回指定するようにしてください(マジで結構あります)。
特にChromeではずっと前から「ページ読み込み時にtransition
が勝手に発火する」というバグがあります。
transition-property
を指定すればある程度回避できますが、面倒だからといって省略するとページ読み込み時にtransition
がちらついたりします。
こういうバグを回避する意味でも必ず指定するようにしてください。
また、transition-duration
ではアニメーションする秒数を指定します。単位は「秒(s)」か「ミリ秒(ms)」で指定できます。
「1000ms = 1s」、「300ms = 0.3s」って感じですね。どちらでもokです。
まとめ
transition
でプロパティを複数指定したい時はプロパティごとに秒数を決める必要があります。
また、transition-property
を省略していると思わぬバグに繋がることがあるので必ず指定するように気をつけましょうね。