JavaScriptで、背景に使える全面フェードスライダーを作成

トップページのメインで背景に全面スライダーを配置しているサイトがよくあります。今回は、JavaScriptで、背景に使える全面フェードスライダーを作成

全面サイズで表示されます。3秒毎に画像が入れ替わります。

全面サイズで表示

3秒毎に画像が入れ替わり

コード

<ul id="fade-slide-conatner">
    <li class="fade-slider" >
        <img src="images/music001.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music002.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music003.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music004.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music005.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music007.jpg" alt=""></li>
    <li class="fade-slider" >
        <img src="images/music006.jpg" alt=""></li>
</ul>
#fade-slide-conatner{
	width:100vw;
	height:100svh;
	overflow: hidden;
	background-repeat: no-repeat;
	background-position: center center;
	opacity: 0.8;
	background-size: cover;
	background-color: #272727;
	position:relative;
}
#fade-slide-conatner .fade-slider{
	width: 100%;
	height: 100%;
	object-fit: cover;
	position:absolute;
	opacity: 0;
	visibility: hidden;
}
#fade-slide-conatner ul li.fade-slider:first-child{
	opacity: 0;
}
#fade-slide-conatner .fade-slider img{
	width: 100%;
	height: 100%;
	object-fit: cover;
}
const fadeSlide = document.querySelectorAll('#fade-slide-conatner .fade-slider');

window.addEventListener('load', () => {
	for (let i = 0; i < fadeSlide.length; i++) {
		const times = fadeSlide.length;
		if(i === times -1){
			fadeSlide[i].animate(
				{
					visibility: 'visible',
					filter: ['blur(10px)', 'blur(0)'],
					opacity:[0,1],
					zIndex: '30'
				},
				{
					duration: 1000,
					delay:3000 * i,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			fadeSlide[i].animate(
				{
					zIndex: '-1'
				},
				{
					dulation: 0,
					delay:3000 + 3000 * i,
					fill: 'forwards',
				}
			);   
		}else{
			fadeSlide[i].animate(
				{
					visibility: 'visible',
					filter: ['blur(10px)', 'blur(0)'],
					opacity:[0,1]
				},
				{
					duration: 1000,
					delay:3000 * i,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			fadeSlide[i].animate(
				{
					visibility: 'hidden',
				},
				{
					dulation: 0,
					delay:4000 + 3000 * i,
					fill: 'forwards',
				}
			);
		}
	
		setInterval(() => {
			if(i === fadeSlide.length -1){
				fadeSlide[i].animate(
					{
						visibility: 'visible',
						filter: ['blur(10px)', 'blur(0)'],
						opacity:[0,1],
						zIndex: '30'
					},
					{
						duration: 1000,
						delay:3000 * i,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				fadeSlide[i].animate(
					{
						zIndex: '-1'
					},
					{
						dulation: 0,
						delay:3000 + 3000 * i,
						fill: 'forwards',
					}
				);   
			}else{
				fadeSlide[i].animate(
					{
						visibility: 'visible',
						filter: ['blur(10px)', 'blur(0)'],
						opacity:[0,1]
					},
					{
						duration: 1000,
						delay:3000 * i,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				fadeSlide[i].animate(
					{
						visibility: 'hidden',
					},
					{
						dulation: 0,
						delay:4000 + 3000 * i,
						fill: 'forwards',
					}
				);
			}
		}, 3000 * times);
	}
});

RECOMMEND

CONTACT

Webサイト作成は、是非
CXG DESIGNへご検討ください。