複数の画像リンク(バナー等)をフェード効果で切り替えるJavaScript
アフィリエイト広告などのバナーを複数設置し、自動で切り替える方法。
下記はレクタングルバナー(300px x 250px)を表示するサンプルコードです。
サイズが異なる場合は、拡大(または縮小)して範囲内で表示します。はみ出た部分は、”overflow:hidden”で見切れるようにしています。
例)5つのレクタングルバナーを順番にフェードして表示するサンプルコード
HTML
<div class="banner-rotator">
<div class="banner-item">
<a href="https://example.com/1"><img src="banner1.jpg" alt="バナー1" class="banner"></a>
</div>
<div class="banner-item">
<a href="https://example.com/2"><img src="banner2.jpg" alt="バナー2" class="banner"></a>
</div>
<div class="banner-item">
<a href="https://example.com/3"><img src="banner3.jpg" alt="バナー3" class="banner"></a>
</div>
<div class="banner-item">
<a href="https://example.com/4"><img src="banner4.jpg" alt="バナー4" class="banner"></a>
</div>
<div class="banner-item">
<a href="https://example.com/5"><img src="banner5.jpg" alt="バナー5" class="banner"></a>
</div>
</div>CSS
.banner-rotator {
position: relative;
width: 300px; /*表示領域:幅*/
height: 250px; /*表示領域:高さ*/
margin: 0 auto;
overflow: hidden; /*見切れた部分は非表示*/
}
.banner-rotator .banner-item{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 1s ease-in-out;
}
.banner-rotator .banner-item img{
width: 100%;
height: 100%;
object-fit: cover;
}javascript(インライン記述する場合)
JavaScript
<script>
document.addEventListener("DOMContentLoaded", function () {
const items = document.querySelectorAll(".banner-rotator .banner-item");
let index = 0;
function showNextBanner() {
items.forEach((item, i) => {
item.style.opacity = i === index ? 1 : 0;
});
index = (index + 1) % items.length;
}
showNextBanner(); // 最初のバナー表示
setInterval(showNextBanner, 3000); // 3秒ごとに切り替え
});
</script>※javascriptは外部ファイル化も可能。
例)banner-rotator.js として外部ファイル化(utf-8 BOMなしで保存)
JavaScript
document.addEventListener("DOMContentLoaded", function () {
const items = document.querySelectorAll(".banner-rotator .banner-item");
let index = 0;
function showNextBanner() {
items.forEach((item, i) => {
item.style.opacity = i === index ? 1 : 0;
});
index = (index + 1) % items.length;
}
showNextBanner(); // 最初のバナー表示
setInterval(showNextBanner, 3000); // 3秒ごとに切り替え
});javascriptを外部化した場合は、下記コードも記述する。
HTML
<script src="js/banner-rotator.js"></script>前で読み込んでもOK。
※javascriptのパスは自分の環境に合わせる