
This method works either on scroll up or on scroll down.
Normally, this is how you scroll down a webpage.
In this tutorial, I’m going to show you how to make a single scroll snap down into the next section.
Creating the Markup
First, let’s create our markup.
So there will be 3 sections in this example (you can add more if you want).
Next, I’m going to wrap these sections in a div with a class of wrapper.
Inside the first section, will be a heading and subheading text content.
The second will be a background image.
And the third one is a heading.
Adding the CSS Styles
For the wrapper div, add a 100 width and 100 view height which will take up all our screen dimensions.
For the first section, add a background.
Also, add a 100 width and 100 view height style to our section.
Using flex to center align the text content.
Remove the body’s default margin.
Add a default font family.
Add style to h1 tag and subheading.
The second section will be a background.
The third one is a section with a background and a heading text.
So, on the wrapper div element.
Add an “overflow-y scroll.”
Then scroll-snap-type:y mandatory.
Next, to the child section element, add a scroll snap align start.
Done, when I do the single scroll on the mouse wheel, it snaps right into the next section.
Example HTML Markup
<div class="wrapper">
<section class="one">
<div class="content">
<h1>The lemon, Citrus limon</h1>
<p class="subheading">
The lemon, Citrus limon, is a species of small evergreen tree in the flowering plant family Rutaceae, native to South Asia, primarily North eastern India
</p>
</div>
</section>
<section class="two">
</section>
<section class="three">
<h2>Buy Your Lemons Now!</h2>
</section>
</div>
CSS Styles
.wrapper {
width: 100%;
height: 100vh;
overflow-y: scroll;
scroll-snap-type: y mandatory;
}
.content {
max-width: 800px;
}
section {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: start
}
.one {
background: url(lemon-1.jpg) -10%/contain no-repeat;
}
h1 {
font-size: 150px;
line-height: 150px;
color: #b7923a;
margin: 0
}
h2 {
font-size: 80px;
color: #ae5db5
}
.subheading {
color: #b7923a;
font-size: 24px;
}
.two {
background: url(lemon-dark.jpg) center/cover no-repeat;
}
.three {
background: url(lemon-2.jpg) center/cover no-repeat;
}




