見出し画像

続、使えるパララックスがなかなかなくて、プラグインなし。自作・・・と言うよりChatGPTな。

本日も隙間時間を使ってパララックスをコツコツ作成。これで、ほぼ万能じゃないか?オプションとかないけど。
めちゃくちゃ軽いし、微調整聞くし。

JS

// JavaScript Document
/**
  * https://dalbianco.co.jp/
  *
  * Copyright 2023, Hideyuki Kobayashi & ChatGPT
  * This content is released under the MIT license
 **/

var isScrolling = false;
window.addEventListener('scroll', throttleScroll);

function throttleScroll() {
  if (!isScrolling) {
    window.requestAnimationFrame(function() {
		
		window.addEventListener('scroll', function() {
			var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
			var scrollSpeed = 0.5; // パララックスの速度調整
			
			var parallaxElements = document.querySelectorAll('.parallax');
			parallaxElements.forEach(function(element) {
				var translateY = (scrollTop - element.parentElement.offsetTop) * scrollSpeed;
				element.style.transform = 'translateY(' + translateY + 'px)';
			});
		});
		
		isScrolling = false;
    });
  }
  isScrolling = true;
}

CSS

.contentsBox {
	width: 100%;
	height: 100vh;
	background-color: #efefef;
}

.parallaxBox_Blank {
	width: 100%;
	height: 400px;
	position: relative;
	overflow: hidden;
}

.parallaxBox_contents {
	width: 100%;
	position: relative;
	overflow: hidden;
}

.parallax {
	width: 100%;
	position: absolute;
	left: 0;
	transform: translateY(0);
	will-change: transform;
}

.parallaxBox_Blank .parallax {
	height: calc(100vh + 100px);
}

.parallaxBox_contents .parallax {
	height: calc(100vh + 100px);
}

.parallax_prop {
	background-size: cover;
	background-position: center center;
	transform: translateY(0);
}

.in_contents {
	width: 80%;
	padding: 30px;
	margin: 50px auto;
	position: relative;
	top: 0;
}

.bg01 {background-image: url("../img/bg01.jpg");}
.bg02 {background-image: url("../img/bg02.jpg");}


/* ------------------------------------------------------ */
/*以下はコンテンツに合わせて調整*/
@media only screen and (max-width : 600px) {
/* ------------------------------------------------------ */

.parallaxBox_contents .parallax {
	height: calc(67%);
}
}

HTML

<div class="contentsBox">コンテンツ1</div>

<div class="parallaxBox_Blank"><div class="parallax bg01 parallax_prop"></div></div>

<div class="contentsBox">コンテンツ2</div>

<div class="parallaxBox_contents"><div class="parallax bg02 parallax_prop"></div>
<div class="in_contents">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</div>

<div class="contentsBox">コンテンツ2</div>

よかったらお試しを。

この記事が気に入ったらサポートをしてみませんか?