gsap.registerPlugin(ScrollTrigger);
ScrollTrigger.create({
trigger: ".page-0",
start: "top top",
end: "bottom",
pin: ".season"
});
ScrollTrigger.create({
trigger: ".page-1",
start: "top top",
end: "bottom",
pin: ".winter"
});
ScrollTrigger.create({
trigger: ".page-2",
start: "top top",
end: "bottom",
pin: ".summer"
});
ScrollTrigger.create({
trigger: ".page-3",
start: "top top",
end: "bottom",
pin: ".spring"
});
ScrollTrigger.create({
trigger: ".page-4",
start: "top top",
end: "bottom",
pin: ".fall"
});
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
*{
margin: 0;
padding: 0;
}
body{
font-family: "Inter", sans-serif;
filter: grayscale(100%);
}
.page{
width: 100%;
height: 100vh;
position: relative;
}
.season{
width: 100%;
height: 100vh;
background-image: url("https://static.vecteezy.com/system/resources/previews/036/226/450/non_2x/ai-generated-nature-landscapes-background-free-photo.jpg");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.winter{
width: 100%;
height: 100vh;
background-image: url("https://wallpapers.com/images/hd/winter-scene-bridge-n3beaqbjiy0xvdbc.jpg");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.summer{
width: 100%;
height: 100vh;
background-image: url("https://images.pexels.com/photos/1450353/pexels-photo-1450353.jpeg?cs=srgb&dl=pexels-asadphoto-1450353.jpg&fm=jpg");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.spring{
width: 100%;
height: 100vh;
background-image: url("https://i.pinimg.com/736x/f5/9b/90/f59b90781e5248d6c5b522f1d3b6df21.jpg");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.fall{
width: 100%;
height: 100vh;
background-image: url("https://images.pexels.com/photos/1114896/pexels-photo-1114896.jpeg?cs=srgb&dl=pexels-jplenio-1114896.jpg&fm=jpg");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
#overflow{
width: 100%;
height: 100vh;
position: absolute;
background: #000;
opacity: 0.5;
}
h1{
color: #fff;
font-size: 14vw;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 2vw;
z-index: 10;
}
<div class="page-0 page">
<div class="season">
<div id="overflow"></div>
<h1>Season</h1></div>
</div>
<div class="page-1 page">
<div class="winter">
<div id="overflow"></div>
<h1>Winter</h1></div>
</div>
<div class="page-2 page">
<div class="summer">
<div id="overflow"></div>
<h1>Summer</h1></div>
</div>
<div class="page-3 page">
<div class="spring">
<div id="overflow"></div>
<h1>Spring</h1></div>
</div>
<div class="page-4 page">
<div class="fall">
<div id="overflow"></div>
<h1>fall</h1></div>
</div>
When I apply a CSS filter property (such as filter: blur() or filter: grayscale()or other CSS filters.) to a top-level parent element like body, and then try to pin a child element using GSAP’s ScrollTrigger, the pinning stops working.
How can I apply a CSS filter to a parent element while still allowing GSAP’s pinning to work properly for its child elements?
