JavaScriptで、パララックスアニメーションのスライダーを作成

今回は、JavaScriptで、パララックスアニメーションのスライダーを作成します。

画像6枚の全面スライダーです。スライダーワイプで画像のスライドスピードをずらしています。

スライダーワイプで画像のスライドスピードをずらす

コード

<ul id="parallax-slideconatner">
	<li class="slide">
       	<img src="images/music005.jpg" alt="">
	</li>
	<li class="slide">
       	<img src="images/music006.jpg" alt="">
	</li>
	<li class="slide">
       <img src="images/music007.jpg" alt="">
	</li>
	<li class="slide">
       	<img src="images/music008.jpg" alt="">
	</li>
	<li class="slide">
       	<img src="images/music009.jpg" alt="">
	</li>
	<li class="slide">
       	<img src="images/music010.jpg" alt="">
	</li>
</ul>
#parallax-slideconatner{
	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;
}
#parallax-slideconatner .slide{
	width: 100%;
	height: 100%;
	object-fit: cover;
	position:absolute;
	visibility: hidden;
}

#parallax-slideconatner ul li.slide:first-child{
	visibility: visible;
	opacity: 0;
}

#parallax-slideconatner .slide img{
	width: 100%;
	height: 100%;
	object-fit: cover;
}
const parallaxSlide = document.querySelectorAll('#parallax-slideconatner .slide');
window.addEventListener('load', () => {
	for (let i = 0; i < parallaxSlide.length; i++) {
		const times = parallaxSlide.length;
		if(i === times -1){	
			parallaxSlide[i].animate(
				{
					visibility: 'visible',
					translate:['100vw 0', 0],
					zIndex: '30',
				},
				{
					duration: 1000,
					delay: 3000 * i,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					zIndex: '-1'
				},
				{
					dulation: 0,
					delay:3000 * times,
					fill: 'forwards',
				}
			);	
		}else if(i === 0){		
			parallaxSlide[i].animate(
				{
					visibility: 'visible',
					filter: ['blur(10px)', 'blur(0)'],
					opacity:[0,1],
				},
				{
					duration: 1000,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					translate:[0, '-50vw 0']
				},
				{
					duration: 1000,
					delay:3000,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					visibility: 'hidden',
				},
				{
					dulation: 0,
					delay:4000,
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					visibility: 'hidden',
				},
				{
					dulation: 0,
					delay:4000,
					fill: 'forwards',
				}
			);
		}else{
			parallaxSlide[i].animate(
				{
					visibility: 'visible',
					translate:['100vw 0', 0]
				},
				{
					duration: 1000,
					delay:3000 * i,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					translate:[0, '-50vw 0']
				},
				{
					duration: 1000,
					delay:3000 + 3000 * i,
					easing: 'ease',
					fill: 'forwards',
				}
			);
			parallaxSlide[i].animate(
				{
					visibility: 'hidden',
				},
				{
					dulation: 0,
					delay: 4000 + 3000 * i,
					fill: 'forwards',
				}
			);
		}
		setInterval(() => {
			if(i === times -1){
				parallaxSlide[i].animate(
					{
						translate:[0, '-50vw 0']
					},
					{
						duration: 1000,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				parallaxSlide[i].animate(
					{
						visibility: 'visible',
						translate:['100vw 0', 0],
						zIndex: '30',
					},
					{
						duration: 1000,
						delay: 3000 * i,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				parallaxSlide[i].animate(
					{
						zIndex: '-1'
					},
					{
						dulation: 0,
						delay: 3000 + 3000 * i,
						fill: 'forwards',
					}
				);
			}else{
				parallaxSlide[i].animate(
					{
						visibility: 'visible',
						translate:['100vw 0', 0]
					},
					{
						duration: 1000,
						delay:3000 * i,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				parallaxSlide[i].animate(
					{
						translate:[0, '-50vw 0']
					},
					{
						duration: 1000,
						delay:3000 + 3000 * i,
						easing: 'ease',
						fill: 'forwards',
					}
				);
				parallaxSlide[i].animate(
					{
						visibility: 'hidden',
					},
					{
						dulation: 0,
						delay: 4000 + 3000 * i,
						fill: 'forwards',
					}
				);
			}
		},3000 * times);
	}
});

RECOMMEND

CONTACT

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