A <back-to-top> button web component with throttle support. Fallbacks to anchor link.
<back-to-top throttle="600">
<!-- 👇 fallback anchor link (v3.0) -->
<a href="#" class="back-to-top-fallback" style="position: fixed; left: 1rem; bottom: 2rem;">back-to-top</a>
<!-- 👇 insert button content here -->
<template>
button content here
</template>
</back-to-top>.back-to-top, a.back-to-top-fallback {
bottom: 3rem;
left: 2rem;
width: 3rem;
height: 3rem;
border: none;
border-radius: 50%;
z-index: 10;
cursor: pointer;
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}
a.back-to-top-fallback {
display: flex;
justify-content: center;
align-items: center;
background-color: lightgray;
}
a.back-to-top-fallback svg, .back-to-top svg {
height: 70%;
}You can use it as an npm package or from a CDN.
- Install the package
npm i @murtuzaalisurti/back-to-top- Import the package in a JS module using:
import "@murtuzaalisurti/back-to-top"
// ... some other code- And refer to that file using a
scripttag such as:
<script src="./your-js-module" type="module"></script>Grab the js file from a CDN using a script tag such as:
<script type="module" src="https://www.unpkg.com/@murtuzaalisurti/back-to-top@latest/public/main.js"></script>With the js script in place, just add this component in your HTML.
<back-to-top throttle="600"></back-to-top>With version 3.0 you can specify a fallback anchor link which is useful when javascript can't execute.
<back-to-top throttle="600">
<!-- 👇 fallback anchor link (v3.0) -->
<a href="#" class="back-to-top-fallback" style="position: fixed; left: 1rem; bottom: 2rem;">back-to-top</a>
</back-to-top>From 3.0.1, you need to specify the back-to-top-fallback class for the fallback element if your fallback element is other than an anchor tag.
You can now specify the button content using a template element inside the back-to-top component.
<back-to-top throttle="600">
<template>
button content here
</template>
</back-to-top>You can style this component however you want (the .back-to-top class is automatically added to the button for you), here are some styles to start with:
.back-to-top, a.back-to-top-fallback {
bottom: 3rem;
left: 2rem;
width: 3rem;
height: 3rem;
border: none;
border-radius: 50%;
z-index: 10;
cursor: pointer;
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}
a.back-to-top-fallback {
display: flex;
justify-content: center;
align-items: center;
background-color: lightgray;
}
a.back-to-top-fallback svg, .back-to-top svg {
height: 70%;
}Introduced in v2.0, you can now use the throttle attribute to set a throttle rate for the back-to-top button. The value is in milliseconds.
<back-to-top throttle="600">
<!-- 👇 fallback anchor link (v3.0) -->
<a href="#" class="back-to-top-fallback" style="position: fixed; left: 1rem; bottom: 2rem;">back-to-top</a>
<!-- 👇 insert button content here -->
<template>
button content here
</template>
</back-to-top>- This package uses lodash for throttling scroll events in order to show/hide the back-to-top button component.
- It uses a custom lodash build generated from
lodash include=throttle -p. - Throttle rate modification support introduced in v2.0
Try it on Codepen or, see it in action here https://murtuzaalisurti.github.io/back-to-top/.