Master Frontend to Backend https://bit.ly/frontend-to-backend-ebook —————— Revolutionize projects with our advanced …
source
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scroll Animation | Javascript</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<section>Scroll Down</section>
<div class="container">
<img src="img1.jpg" alt="" class="item">
<img src="img2.jpg" alt="" class="item">
<img src="img3.jpg" alt="" class="item">
<img src="img4.jpg" alt="" class="item">
<img src="img5.jpg" alt="" class="item">
<img src="img6.jpg" alt="" class="item">
<img src="img7.jpg" alt="" class="item">
<img src="img8.jpg" alt="" class="item">
</div>
<section>Scroll Up</section>
<script>
let options = {
root: null,
threshold: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
}
let callback = (entries, observer) => {
entries.forEach((entry) => {
entry.target.style.scale = entry.intersectionRatio;
});
};
let observer = new IntersectionObserver(callback, options);
for (const target of document.querySelectorAll('.item')) {
observer.observe(target);
}
</script>
</body>
</html>
*
{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body
{
background: #111;
}
section
{
display: flex;
justify-content: center;
align-items: center;
color: #fff;
min-height: 100vh;
font-size: 6em;
}
.container
{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 50px;
}
.container .item
{
transition: 0.5s;
}

