See the Pen 画面遷移時のシャッターアップアニメーション by チータツ (@cheese_fuji) on CodePen.
Rerunをクリックで再度アニメーション↑
上に開くようなシャッターアップのアニメーションです。(カメラのシャッターではありません)
CSSの解説
基本的な仕組みは単純。画面と同じサイズのマスクを用意して、transform: scale()で縮小させるだけです。
- @keyframesでアニメーションを作成
- 0%で高さ最大scaleY(1)
- 100%で縮んで消えるscaleY(0)
- 画面を覆うための疑似要素body:afterを作成する
- position: fixedで固定表示
- width: 100vwとheight: 100vhで画面と同じサイズにする
- left: 0 とtop:0で画面にぴったり合わせる
- z-index: 999を指定して、他の固定表示要素よりも上に表示する
- backgroundで色付け
- animationを指定(時間、アニメーション名、forwards)
- 好みで遅延時間animation-delayを設定
- transform-origin: topで変化の始点を上に設定
応用CSS
このアニメーションはtransform: scale()を使った拡大・縮小で作られているため、アニメーションの始点を指定するtransform-originを変更するだけで、簡単に向きを変えることが可能です。
シャッターダウン
シャッターアップとは逆に、背景が下に落ちていくアニメーションです。
下方向へ動かすためtransform-origin: bottomを指定しています。
See the Pen シャッターダウンアニメーション by チータツ (@cheese_fuji) on CodePen.
シャッターレフト
もはやシャッターなのかは疑わしいですが、背景が横に動くページ遷移用アニメーションです。
横方向への縮小にするため@keyframes内をscaleY()からscaleX()へ変更。transform-origin: leftで左方向に動かしています。横に長いPC画面に実装する場合は、アニメーション時間を長めにするといいかも?
See the Pen シャッターレフト by チータツ (@cheese_fuji) on CodePen.
シャッターライト
シャッターレフトとは逆に、transform-origin: rightを指定して右方向に動かしています。
See the Pen シャッターライトのアニメーション by チータツ (@cheese_fuji) on CodePen.
ちなみに、このシャッターレフトとシャッターライトを合成すると、カーテンのようなページ遷移が作れます。