クリエイターブログ

【CSS】スクロールに連動するアニメーション

2024.11.20 Posted by

こんにちは、クリエイターブログです。今回はCSSのみでスクロールに連動するアニメーションについて紹介したいと思います。

 

はじめに

従来スクロールに連動するアニメーションを作る際は、javascriptとCSSの両方を用いていました。

ですが限定的ながらもCSSのみで作成することが可能となってきています。

Firefox、Safari(iOS Safariも)などの特定環境では現状使用できないですが、今後の対応に期待して紹介していきたいと思います。

まずは4つのアニメーションを作成してみましたのでDEMOをご確認くださいませ。順を追ってを説明していきます。

DEMOはこちら

 

 

HTMLについて

HTMLの内容は以下になりますが、アニメーションさせたい個所にクラスを付与するだけなので特に語ることは無いかと思います。

ここでは .fadein .scale .slideup .to-rightが対応します。

 

 

 

CSSについて

CSSの内容は以下となります。記述量としては従来のアニメーションの記述に数行加えるだけの形になります。

スクロールに連動するよう設定するのが animation-timeline と animation-range の各プロパティです。

各プロパティの詳細については後述します。

 

 

 

animation-timeline プロパティ

このプロパティでアニメーションの進行を制御するのに使われるタイムラインを設定します。

詳細については以下の開発者向けドキュメントをご覧ください。

animation-timeline – CSS: カスケーディングスタイルシート | MDN

 

以下は対応環境となります。

“animation-timeline” | Can I use… Support tables for HTML5, CSS3, etc

 

ここで view() と設定することでスクロールして要素が見える場所に入ったらアニメーションが開始されて、見えなくなったらアニメーションが終了します。

他にも scroll() と設定するとページ全体のスクロール量に応じてアニメーションさせることも可能です。

 

 

animation-range プロパティ

このプロパティでアニメーションの適用範囲を設定します。つまりどこでアニメーションが始まり、どこで終わるかを設定することになります。

詳細については以下の開発者向けドキュメントをご覧ください。

animation-range – CSS: カスケーディングスタイルシート | MDN

 

以下は対応環境となります。

“animation-range” | Can I use… Support tables for HTML5, CSS3, etc

 

cover は最初に可視範囲に入り始めた時点(進行度 0%)から、完全にその範囲から離れた時点(進行度 100%)までとなるので、cover 0% 50% とするとその中間地点に設定することになります。

ここはドキュメントを見ても分かりづらいと思うので色々と触ってみるといいでしょう。

 

 

まとめ

animation-timeline と animation-range の各プロパティを用いることによってCSSのみで簡単にスクロールに連動したアニメーションを実現することが可能となりました。

早くFirefox、Safariでも実装されれば表現の幅が色々と広がるし、javascriptにも頼る必要が無くなってくるので使用する機会が多そうですね。

現状は特定環境は考慮しない場合のみにしか使えなさそうです。iOS Safariで使用できないのはやはり大きいです。

以上クリエイターブログでした。

オリエンシートダウンロード

採用サイト 絶対に外せない5つのチェックポイント

オリエンシートダウンロード

CONTACT

お電話でのお問い合わせ

03-5366-3277

受付時間:平日9:30〜18:30

メールフォームからのお問い合わせ

お問い合わせ(東京本社)

PAGETOP

Document資料請求

Contactお問い合わせ