Skip to content

Scroll JS

js
import Scroll from "@natachah/vanilla-frontend/js/_scroll"

Syntax

The scroll component make you able to add some <button> to go on the top or bottom of an element.

It also make you able to spy on a <nav> to automatically set the current attribute on links when scrolling.

WARNING

To work on the <body>, you must passed the document.documentElement as parameter.

html
<nav id="demoScrollNav">
    <ul class="list">
        <li><a role="button" href="#target1" aria-current="location">One</a></li>
        <li><a role="button" href="#target2">Two</a></li>
        <li><a role="button" href="#target3">Three</a></li>
        <li><button data-scroll-bottom="demoScrollSpy">Scroll to the bottom</button></li>
        <li><button data-scroll-top="demoScrollSpy">Scroll to the top</button></li>
    </ul>
</nav>
<div id="demoScrollSpy" style="height: 150px; overflow-y: scroll; position: relative">
    <div>
        <p id="target1">1) Lorem ipsum dolor sit amet consectetur adipisicing elit. Quis in dolore exercitationem, quibusdam repellat perspiciatis qui deleniti commodi reiciendis provident dolorem libero velit, ipsam inventore laudantium, maxime repudiandae minima. Sunt? Lorem ipsum dolor sit amet consectetur adipisicing elit. Quis in dolore exercitationem, quibusdam repellat perspiciatis qui deleniti commodi reiciendis provident dolorem libero velit, ipsam inventore laudantium, maxime repudiandae minima. Sunt? Lorem ipsum dolor sit amet consectetur adipisicing elit. Quis in dolore exercitationem, quibusdam repellat perspiciatis qui deleniti commodi reiciendis provident dolorem libero velit, ipsam inventore laudantium, maxime repudiandae minima. Sunt?</p>
        <p id="target2">2) Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas. Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas.Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas.</p>
        <p id="target3">3) Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas.Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas.Lorem, ipsum dolor sit amet consectetur adipisicing elit. At excepturi ratione modi vero eligendi doloremque architecto ab quaerat delectus minima doloribus, ut, sint eos ipsam impedit reprehenderit hic, labore voluptas.</p>
    </div>
</div>
js
import Scroll from "@natachah/vanilla-frontend/js/_scroll"
const scrollSpy = document.getElementById('demoScrollSpy')
if (scrollSpy) {
    new Scroll(scrollSpy,{
        navigation: 'demoScrollNav'
    })
}

Javascript

Options

NameDescriptionValue
behaviorThe scroll behaviorsmooth as string can be auto, smooth or instant
navigationThe id of the navigation to spyNULL or a string
gaps.topThe distance when to toggle the go top button100 as number
gaps.bottomThe distance when to toggle the go bottom button100 as number
gaps.spyThe distance when change the navigation current100 as number
js
new Scroll(myElement,{
    behavior: 'smooth'
    navigation: 'scrollNav',
    gaps: {
        top: 200,
        bottom: 200,
        spy: 100
    }
})

Methods

MethodDescription
goTo(distance)This method will go to a specific position
scrollTop()This method will go to the top of the element
scrollBottom()This method will go to the bottom of the element

Released under the MIT License.