See the Pen 背景が2段階で変わるページ遷移アニメーション by チータツ (@cheese_fuji) on CodePen.
Rerunで再アニメーション↑
CSSの解説
アニメーションさせる対象が2つになっただけで、基本的な仕組みはシャッターアニメーションと同じです。
サンプルでは疑似要素body::before, body::afterの2つを使用しています。bodyの疑似要素を使いたくない人は、div要素などを代わりに作成してCSSを適用させてください。
- 画面を覆う背景を2つ作成する
- position: fixedで固定表示
- width: 100vwとheight: 100vhで画面サイズに合わせる
- transform-originでアニメーションの向きを決める(サンプルは左→右)
- 前面の背景の調整
- z-indexを高い数値にして上に重ねる
- animationを指定(アニメーション名、時間、forwards)
- animation-delayでアニメーション開始の遅延時間を設定
- 背面の背景を調整
- z-indexを前面の背景より1つ小さい値に
- animationを指定(時間を少し変えてみるといい感じかも?)
- animation-delayを前面背景のアニメーション後に調整(前面の遅延時間+前面のアニメーション時間 より高い数値に)
- @keyframesで背景が動くアニメーションを作成
- 0%:transform: scaleX(1) で幅は最大値
- 100%:transform: scaleX(0) で幅を0に、visibility: hiddenで非表示に※
幅や座標を間違えない限りはvisibility :hiddenがなくてもちゃんと画面から消えますが、モニター外に存在するというのが気持ち悪いので一応書いています。
9行目 transform: origin をleftにすれば、左へ流れるアニメーションに変わります。
応用CSS
縦にスライドする
先ほどのサンプルとは違い、縦方向に背景がスライドします。transform-origin: topで起点を上に変更し、scaleX()からscaleY()によるアニメーションへと変更しています。
下方向にスライドさせたい場合は、transform-origin: bottomへと変更してください。
See the Pen 2段階で背景がスライドするオープニングアニメーション(縦) by チータツ (@cheese_fuji) on CodePen.