当サイト使用テーマ

\ SWELL【WordPressテーマ】 /
当サイト使用サーバー
\ レンタルサーバー【ConoHa WING】 /
プログラミング学習

この記事では、JavaScriptのsetIntervalを使って指定した時間ごとに画像をふわっと切り替えるプログラミングコードを解説していきます。
最初に完成形を見ていきます。
3枚の画像がふわっと切り替わっています。
See the Pen js-03 by aqua (@aqua-programdiary) on CodePen.
まずは、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>
<img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image1.jpg" class="active">
<img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image2.jpg">
<img src="https://aqua-programdiary.com/wp-content/uploads/2023/08/image3.jpg">
<script src="main.js"></script>
</body>
</html>
img 要素:
src 属性を持つ img 要素として表示されています。class="active" が追加されており、表示されている画像を示しています。<script> タグ:
main.js スクリプトが読み込まれています。このスクリプトで画像のスライドショーを制御します。次に、CSSのコーディングをしていきます。
@charset "utf-8";
img {
position: absolute;
top: 0;
left: 0;
opacity: 0;
transition: all 2s ease;
max-width: 300px;
}
img.active {
opacity: 1;
}
img 要素の共通スタイル:
position: absolute;: 画像を絶対位置で配置します。top: 0; left: 0;: 画像をページの左上に配置します。opacity: 0;: 画像の透明度を初期値 0 に設定し、非表示にします。transition: all 2s ease;: すべてのプロパティに2秒のトランジション(アニメーション)を設定し、緩やかなイージングで変化します。max-width: 300px;: 画像の最大幅を300ピクセルに制限します。.active クラスのスタイル:
opacity: 1;: .active クラスを持つ画像の透明度を1に設定し、表示されるようにします。最後にJavaScriptのコーディングをして完成です。
const images = document.querySelectorAll('img');
let number = 0;
function changeImage() {
images[number].classList.remove('active');
number = (number + 1) % images.length;
images[number].classList.add('active');
}
setInterval(changeImage, 4000);
const images = document.querySelectorAll('img');
img 要素を取得し、images 変数に格納します。let number = 0;
function changeImage() { ... }
changeImage 関数は、スライドショーの画像を切り替えるためのロジックを含む関数です。images[number].classList.remove('active');
active クラスを削除します。これにより、画像が非表示になります。number = (number + 1) % images.length;
number 変数をインクリメントし、images.length で割った余りを新しい number に設定します。これにより、次の画像のインデックスが計算されます。ループするように設定されているため、最後の画像の次は最初の画像に戻ります。images[number].classList.add('active');
active クラスを追加して、画像を表示します。setInterval(changeImage, 4000);
changeImage 関数を定期的に実行するために、setInterval 関数を使用します。この場合、4秒ごとに changeImage 関数が呼び出されます。