この記事では、CSSのアニメーションを使って無限ループで流れる画像を実装するプログラミングコードを解説していきます。
目次
完成形
最初に完成形を見ていきます。
3枚の画像が右から左に向かって流れています。
See the Pen cssanimation02 by aqua (@aqua-programdiary) on CodePen.
HTMLコーディング
まずは、HTMLのコーディングをしていきます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Document</title> </head> <body> <div class="slide-animation"> <ul class="slide-contents"> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image1.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image2.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image3.jpg" alt=""></li> </ul> <ul class="slide-contents"> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image1.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image2.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image3.jpg" alt=""></li> </ul> <ul class="slide-contents"> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image1.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image2.jpg" alt=""></li> <li><img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image3.jpg" alt=""></li> </ul> </div> </body> </html>
<!DOCTYPE html> ... </html>
:- HTML ドキュメントの開始と終了を示します。
<head> ... </head>
:- ドキュメントのヘッダーセクションです。
meta
要素は文字コードとビューポート設定を指定します。link
要素で外部のスタイルシート(style.css
)を読み込みます。
<body> ... </body>
:- ドキュメントの本体部分です。
<div class="slide-animation"> ... </div>
:- スライドアニメーションのコンテナ要素です。このコンテナ内でスライドを表示します。
<ul class="slide-contents"> ... </ul>
:- 画像スライドのコンテンツを含む
ul
要素です。 - 各
li
要素内に画像が配置されます。
- 画像スライドのコンテンツを含む
<li><img src="..."></li>
:- 各スライドの画像を表示する
li
要素です。 img
要素のsrc
属性に画像の URL を指定しています。
- 各スライドの画像を表示する
CSSコーディング
CSSのコーディングをして完成です。
@charset 'utf-8'; img { width: 100%; } li { list-style: none; } ul { margin: 0; padding: 0; } .slide-animation { display: flex; gap: 10px; overflow: hidden; } .slide-animation li { width: 300px; } .slide-contents { display: flex; gap: 10px; animation: loopAnimation 30s linear infinite; } @keyframes loopAnimation { 0% { transform: translate(0%); } 100% { transform: translate(-100%); } }
@charset 'utf-8';
- 文字コードをUTF-8に設定します。
img { ... }
:- すべての画像要素に適用されるスタイルです。画像をコンテナの幅に合わせて拡大表示します。
li { ... }
:li
要素(スライドコンテンツの各アイテム)に適用されるスタイルです。デフォルトのリストスタイルを無効にします。
ul { ... }
:ul
要素に適用されるスタイルです。マージンとパディングをゼロに設定します。
.slide-animation { ... }
:- スライドアニメーションのコンテナに適用されるスタイルです。
display: flex
でフレックスコンテナを作成し、子要素間のギャップを設定します。overflow: hidden
でコンテナ外の要素を隠します。
.slide-animation li { ... }
:- スライドアニメーションの各スライドコンテンツ要素に適用されるスタイルです。
- 各アイテムの幅を300pxに設定します。
.slide-contents { ... }
:- 各スライドコンテンツのコンテナに適用されるスタイルです。
display: flex
でフレックスコンテナを作成し、子要素間のギャップを設定します。animation
プロパティでキーフレームアニメーションloopAnimation
を30秒かけて無限に実行します。
@keyframes loopAnimation { ... }
:- スライドアニメーションのためのキーフレームアニメーションです。
- 0% から 100% まで、コンテナ内のコンテンツを左に移動させてループさせます。