JavaScriptでサムネイル画像をローディング画像に切り替え
今回の課題にJavaScriptでサムネイル画像をローディング画像に切り替える実装方法を紹介したいと思います。実装手順通りやっていきます。
1、フォルダーを配置
2、HTMLファイルを作成
3、CSSで画像を装飾
4、JavaScriptで画像をクリックするときのメソッドを作成
フォルダーを配置
「sample」フォルダーを新規作成します。
その中に「css」「img」「js」フォルダーとHTMLファイルを新規作成します。(img-1)
cssファイル(style.css)を作成して、フォルダー「css」に入れます。(img-2)
同じサイズの画像を5枚用意しておきます。ファイル名は下記のようにします。それをフォルダー「img」に入れます。(img-3)
JavaScriptファイル(imgSwitch.js)を作成して、フォルダー「js」に入れます。(img-4)




HTMLファイルを作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>JavaScriptでサムネイル画像をローディング画像に切り替え</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="imgBox">
<div class="main"></div>
<div class="thumb"></div>
</div>
<script src="js/imgSwitch.js"></script>
</body>
</html>
HTMLファイルにcssファイルを<title>と<body>の間に差し込みします。
JavaScriptファイルを</body>の前に配置します。
希望のレイアウトによって、imgBoxブロック要素にmainブロック要素とthumbブロック要素を配置します。
mainブロック要素はローディング画像の配置場所で、thumbブロック要素はサムネイル画像の配置場所となっています。
CSSで画像を装飾
body {
background-color: azure;
box-sizing: border-box;
text-align: center;
}
#imgBox {
margin: auto;
padding-top: 60px;
width: 500px;
}
#imgBox .main img {
border: 4px solid #fff;
box-shadow: 0px 0px 14px #000;
width: 100%;
}
#imgBox .main p {
color: blueviolet;
font-size: 24px;
font-weight: bold;
}
#imgBox .thumb img {
border:4px solid #fff;
border-radius: 400px;
box-shadow: 0px 0px 10px #000;
height: 60px;
margin: 10px;
width: 60px;
}
このコードでサンプルページの背景色、画像の中央揃え、画像のサイズ、ボーダの仕様を装飾しました。
JavaScriptで画像をクリックするときのメソッドを作成
// アルバムデータの作成
var album = [
{ src: 'img/1.jpg', msg: 'ふとすぎだ!'},
{ src: 'img/2.jpg', msg: '運動しよう'},
{ src: 'img/3.jpg', msg: '簡単な方法からやる'},
{ src: 'img/4.jpg', msg: '順調に進んでいる'},
{ src: 'img/5.jpg', msg: '出来ました!'}
];
// 最初のデータを表示しておく
var mainImage = document.createElement('img');
mainImage.setAttribute('src', album[0].src);
mainImage.setAttribute('alt', album[0].msg);
var mainMsg = document.createElement('p');
mainMsg.innerText = mainImage.alt;
var mainFlame = document.querySelector('#imgBox .main');
mainFlame.insertBefore(mainImage, null);
mainFlame.insertBefore(mainMsg, null);
// サムネイル画像の表示
var thumbFlame = document.querySelector('#imgBox .thumb');
for (var i = 0; i < album.length; i++) {
var thumbImage = document.createElement('img');
thumbImage.setAttribute('src', album[i].src);
thumbImage.setAttribute('alt', album[i].msg);
thumbFlame.insertBefore(thumbImage, null);
}
// クリックした画像をメインにする
thumbFlame.addEventListener('click', function(event) {
if (event.target.src) {
mainImage.src = event.target.src;
mainMsg.innerText = event.target.alt;
}
});
実装効果は下記です。

サムネイル画像をクリックして、それに対するローディング画像を表示されます。予想図は最後のサムネイル画像をクリックしたときの表示です。
ここでコードの詳細を共有しました。ホームページなどを作成するときに、サムネイル画像をローディング画像に切り替える実装がよくあるので、ご参考にしてください。
エンジニアファーストの会社
株式会社CRE‐CO
嬋