CSSのtransitionの概要
注意 ※バージョンや環境によっては正常に動作しない可能性があります。
transitionは要素の2つの状態間の変化を決めるものです。
とある状態からとある状態に移る際の時間や加速曲線を設定します。
例として、opacity:1の要素にマウスオーバーすると、opacityが0.5(半透明)になるとして、通常は瞬時に切り替わるところを1秒かけて切り替える、などに使います。
以下はMDNのtransitionの項目です。
transitionの設定方法
以下の4つのプロパティを一括で指定できます。
transition-property : アニメーションを適用するプロパティ transition-duration : アニメーション完了まで時間 transition-timing-function :アニメーション実行中の値の変更速度(加速曲線) transition-delay :アニメーションが始まるまでの待機時間
初期値は以下になります。
transition-property: all ; transition-duration: 0s ; transition-timing-function: ease ; transition-delay: 0s ;
以下のような感じで指定します。
.transition-3:hover{ opacity: 0; height:200px; transition: all 1s ease-out 1s; }
transitionの後に1sとだけつけると、durationだけきいて、それ以外は初期値のままになります。細かく設定する必要が無い場合は、durationの時間だけ設定しておくのが便利です。
transitionの設定例
transition: 1s;
hoverにtransitionを設定。マウスオーバー時はアニメーションする。マウスアウト時はアニメーションしない。
.transition-1{ height:100px; background-color: #111; color:#ccc; opacity: 1; } .transition-1:hover{ opacity: 0; transition: 1s; }
hover側にしかtransitionを設定していないため、transition-1⇒transition-1:hoverの時だけアニメーションが反映されます。逆は動作しません。
transitionの特徴の一つがこれです。一方通行の二点間の状態変化の設定になります。
transitionは1sしか設定していないのですが、こうするとduration(アニメーション完了までの時間)のみが指定され、その他の要素は初期値になります。
transition: 1s;
元とhover両方にtransitionを設定。行き帰りでアニメーションする
.transition-2{ height:100px; background-color: #111; color:#ccc; opacity: 1; transition: 1s; } .transition-2:hover{ opacity: 0; transition: 1s; }
transition-1とtransition-1:hoverの両方にtransition: 1sを設定しています。
こうすると、行きと帰りで両方ともアニメーションが反映されます。
transition-1:hover⇒transition-1にもアニメーションを反映する場合は、transition-1にtransitionを設定する必要がある、ということです。
transition: all 1s ease-out 1s;
opacityと高さが1秒でアニメーションする。マウスオーバー時に1秒のディレイがかかる。transition-timing-functionはease-out
.transition-3{ height:100px; background-color: #4a4ac3; color:#ccc; opacity: 1; } .transition-3:hover{ opacity: 0; height:200px; transition: all 1s ease-out 1s; }
hoverに、opacityに加えてheightを設定しています。
そのため、1秒かけてheightが倍の200pxになっています。
allはトランジションが反映される要素全てが変化します。
ここを「opacity」にすると、heightはディレイやdurationが利かずに一瞬で200pxになり、1秒後にopacityが利いて透明になります。「height」にすると、一瞬で透明になり、1秒後に見えない状態でheightが200pxになります。
加速曲線に関しての詳細は以下に例が上がっています。
transitionはtransformと組み合わせるといろいろできる
transitionは良くtransformと組み合わさって、様々な動きを表現できます。
以下、MDNのtransformページです。
transitionでも、各種設定を組み合わせることによって、様々なことができます。animationを使ったほうがもっと色々できますが、対応ブラウザの問題が出てきます。
transitionのほうが手軽で手っ取り早く実装できるので気楽です。
ただ、ビジュアル重視のサイトならば良いのですが、そうでない場合は動いていると視認性が悪かったり速度に影響があったりと、体験の部分でマイナスがあるので難しいところです。ワードプレスのテーマでも、あんまりぐりぐり動くようなテーマは、検索上位であんまり見ないですし…。
デザイナーさんとか、ビジュアル重視で売って行くサイトなどは、イメージ戦略的に必要かな~とは思いますが。
通常のサイトだとアクセント程度にってのがいいんでしょうね~アニメーション。
各種個別設定
transition-property : アニメーションを適用するプロパティ
transition-duration : アニメーション完了まで時間
transition-timing-function :アニメーション実行中の値の変更速度(加速曲線)
transition-delay :アニメーションが始まるまでの待機時間