Проведите мышью вниз, чтобы добиться параллаксной прокрутки.
код
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>параллаксная прокрутка</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<section>
<h1>Good morning!</h1>
</section>
<section>
<h1>Good afternoon!</h1>
</section>
<section>
<h1>Good evening!</h1>
</section>
<section>
<h1>How are you?</h1>
</section>
<section>
<h1>Nice to meet you.</h1>
</section>
<section>
<h1>It's nice to see you.</h1>
</section>
<section>
<h1>Long time no see.</h1>
</section>
<section>
<h1>How's it going?</h1>
</section>
<script src="gsap.min.js"></script>
<script src="ScrollTrigger.min.js"></script>
<script src="./main.js"></script>
</body>
</html>
кодscss
body{
margin: 0;
padding: 0;
box-sizing: border-box;
}
section{
width: 100%;
height: 100vh;
display: flex;
background-size: cover;
background-position: center;
}
@for $i from 1 through 8 {
section:nth-child(#{$i}){
background-image: url('./imgs/image#{$i}.jpg');
}
}
h1{
font-size: 120px;
margin: auto;
color: rgb(207, 23, 23);
}
кодcss
body {
margin: 0;
padding: 0;
box-sizing: border-box;
}
section {
width: 100%;
height: 100vh;
display: flex;
background-size: cover;
background-position: center;
}
section:nth-child(1) {
background-image: url("./imgs/image1.jpg");
}
section:nth-child(2) {
background-image: url("./imgs/image2.jpg");
}
section:nth-child(3) {
background-image: url("./imgs/image3.jpg");
}
section:nth-child(4) {
background-image: url("./imgs/image4.jpg");
}
section:nth-child(5) {
background-image: url("./imgs/image5.jpg");
}
section:nth-child(6) {
background-image: url("./imgs/image6.jpg");
}
section:nth-child(7) {
background-image: url("./imgs/image7.jpg");
}
section:nth-child(8) {
background-image: url("./imgs/image8.jpg");
}
h1 {
font-size: 120px;
margin: auto;
color: rgb(207, 23, 23);
}
/*# sourceMappingURL=style.css.map */
кодjs
const sections = document.querySelectorAll('section');
gsap.registerPlugin(ScrollTrigger); // зарегистрироватьсяплагин
sections.forEach(section => {
gsap.fromTo(section,
{backgroundPositionY: `-${window.innerHeight / 2}px`},
{
backgroundPositionY: `${window.innerHeight / 2}px`,
ease: 'none',
scrollTrigger: {
trigger: section,
scrub: true
}
});
});
очки знаний jscode
document.querySelectorAll('section')
:Используется для получения всех элементов на странице <section>
элемент.gsap.registerPlugin(ScrollTrigger)
:зарегистрироваться ScrollTrigger
подключите, чтобы использовать его функциональность в последующем коде.gsap.fromTo
метод для каждого <section>
Элементы заданы анимацией.
backgroundPositionY
。backgroundPositionY
。ease: 'none'
Указывает на использование эффектов линейного замедления.scrollTrigger
Установите триггерный элемент в объекте на текущий цикл. <section>
элементы и scrub: true
Указывает, что анимация следует за прокруткой в реальном времени.