GitHub Workflow Status GitHub npm

Scrolltopable

Scrolltopable is a JavaScript module that provides ultimate scroll-to-top functionality. No dependencies and frameworks, pure JavaScript!

See our demo.

Simple Usage

<head>
  <!-- include basic css -->
  <link rel="stylesheet" type="text/css" href="https://unpkg.com/@internetguru/scrolltopable@latest/basic.css"/>
  <!-- include scrolltopable -->
  <script type="module" src="https://unpkg.com/@internetguru/scrolltopable@latest/index.min.js"></script>
  <!-- initialization with modifying default options -->
  <script type="module">
    import { Scrolltopable } from './index.min.js'
    Scrolltopable.init({
      text: 'Top',
      hideTop: 0,
    })
  </script>
</head>

Note: you can install package locally by running npm i @internetguru/scrolltopable --save.

Advanced Example

Launch a rocket after clicking a button! See it in production.

<head>
  <!-- include basic css -->
  <link rel="stylesheet" type="text/css" href="https://unpkg.com/@internetguru/scrolltopable@latest/basic.css"/>
  <!-- include fontawesome -->
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/js/all.min.js"></script>
  <!-- include scrolltopable -->
  <script type="module" src="index.js"></script>
  <!-- initialization with modifying default options -->
  <script type="module">
    import { Scrolltopable } from './index.js'
    Scrolltopable.init({
      text: "<span class='fa fa-fw fa-space-shuttle fa-rotate-270'></span>",
      activeTimeout: 1500
    })
  </script>
  <!-- launch animation and rocket icon styles -->
  <style type="text/css">
    html {
      scroll-behavior: smooth;
    }
    #js-scrolltopable {
      background: none;
    }
    #js-scrolltopable svg {
      position: relative;
      left: 0;
      top: -0.25em;
      font-size: 0.65em;
      color: black;
    }
    #js-scrolltopable.js-scrolltopable--active {
      animation-name: launch;
      animation-duration: 1s;
      animation-timing-function: ease-in;
      animation-fill-mode: forwards;
      opacity: 1;
    }
    @keyframes launch {
      90% {bottom: 100vh; opacity: 1;}
      100% {bottom: 100vh; opacity: 0;}
    }
  </style>
</head>

Options

Configuration name Default value Description
content Button content (raw HTML)
title Top Button title
id js-scrolltopable Button id and class name
visibleClass js-scrolltopable--visible Class for visible button
activeClass js-scrolltopable--active Class for active button
extraClass noprint List of extra classes separated by space
hideBeforeTop 500 No-show zone from the top (px)
showBeforeBottom 500 No-hide zone from the button (px)
showAfterUp 200 Show the button after scrolling up (px)
hideAfterDown 200 Hide the button after scrolling down (px)
activeTime 0 Keep activeClass after clicking the button (ms)
scrollActionDelay 200 Wait before evaluating scrolling (ms)

Maintainers

Contributing

Pull requests are welcome, don’t hesitate to contribute.

Donation

If you find this program useful, please send a donation to its developers to support their work. If you use this program at your workplace, please suggest that the company make a donation. We appreciate contributions of any size. Donations enable us to spend more time working on this package, and help cover our infrastructure expenses.

If you’d like to make a donation of any value, please send it to the following PayPal address:

PayPal Donation

Since we aren’t a tax-exempt organization, we can’t offer you a tax deduction. But for all donations over 50 USD, we’d be happy to recognize your contribution on this README file for the next release.

We are also happy to consider making particular improvements or changes, or giving specific technical assistance, in return for a substantial donation over 100 USD. If you would like to discuss this possibility, write us at info@internetguru.io.

Another possibility is to pay a software maintenance fee. Again, write us about this at info@internetguru.io to discuss how much you want to pay and how much maintenance we can offer in return.

Thanks for your support!

License

MIT License

Copyright (c) 2022 Internet Guru

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.