a Vanilla JS Smooth Scroll to ⚓ script

Overview

Smooth Scroll Library

ScrollToSmooth

CodeFactor Filesize Version


Support for older versions: If you need documentation for versions prior 3.0.0 visit this page


Lightweight Vanilla JS Smooth Scroll animation library without dependencies.

Create beautiful scroll animations with ease. ScrollToSmooth comes with a powerful set of options to get the best out of your project.
Powered by window.requestAnimationFrame() API and highly customizable.

Notice: If you just need simple smooth scrolling for a tags you might not need this library. Check out the native CSS scroll behavior and CSS scroll margin top.


View the Demo on CodePen 🎉


Getting Started | Usage | API | Noteworthy features | Browser Compatibility

Getting started

Installation

NPM

npm install scrolltosmooth

From a CDN

<!-- Latest version with all easings -->
<script src="https://cdn.jsdelivr.net/npm/scrolltosmooth/dist/scrolltosmooth.pkgd.min.js"></script>
<!-- Latest version with linear easing only -->
<script src="https://cdn.jsdelivr.net/npm/scrolltosmooth/dist/scrolltosmooth.min.js"></script>

Download

Directly download the repository and include the production ready code from the dist folder in your project.

Include the script in your code:

<script src="path/to/scrolltosmooth.min.js"></script>

Usage

import { 
  scrollToSmooth, 
  easeOutCubic 
} from 'scrolltosmooth';

let smoothScroll = new scrollToSmooth('a', {
  targetAttribute: 'href',
  duration: 400,
  durationRelative: false,
  durationMin: false,
  durationMax: false,
  easing: easeOutCubic,
  onScrollStart: (data) => {
    // do something
  },
  onScrollUpdate: (data) => {
    // do something
  },
  onScrollEnd: (data) => {
    // do something
  },
  offset: null
});
smoothScroll.init();

API

Smooth scroll Options

container

Type: string|element
Default: document

Specify a container element that contains the targets of the current initialization.

targetAttribute

Type: string
Default: 'href'

The attribute to determine the target element. Must be a valid selector!
You may use other attributes than href like for example data-scrollto so that the browsers default behaviour for anchor links does not change.

<span data-scrollto="#target">Scroll to Section 1<span>
<section id="target">
  Target Section
</section>

offset

Type: string|element|number
Default: null

Specify an element or a number to calculate the final position of the scrolling animation with offset to top.
Example: '#fixed-header'

Notice: You can also pass a numeric value for the offset option.

topOnEmptyHash

Type: boolean
default: true

If your targetAttribute contains an empty hash (#) on a href attribute force scroll to top.

duration

Type: number
Default: 400

Scroll animation duration in milliseconds.

durationRelative

Type: boolean|number
Default: false

durationRelative can be used to adjust the scroll animation duration by the amount of pixels to scroll.
If true scrollToSmooth will use the value of duration to calculate the amount of time in milliseconds to scroll the page by 1000px.
You can also use a number, for example 2000 to calculate the duration by 2000px.

Scroll distances that are below that number will take less time than defined in duration, while distances above will take longer to animate.

durationMin

Type: number
Default: null

durationMin represents the minimum amount of milliseconds to perform the animation when using a relative duration.

durationMax

Type: number
Default: null

just like durationMin, durationMax represents the maximum amount of milliseconds to perform the animation when using a relative duration.

easing

Type: string|function
Default: null

ScrollToSmooth comes with 31 predefined easing patterns.
By default scrollToSmooth is bundled with the linear easing type.

Linear easings output progress value is equal to the input progress value

  • linear

Ease-In progress value gradually increases in speed

  • easeInQuad
  • easeInCubic
  • easeInQuart
  • easeInQuint
  • easeInSine
  • easeInExpo
  • easeInCirc
  • easeInElastic
  • easeInBack
  • easeInBounce

Ease-Out progress value gradually decreases in speed

  • easeOutQuad
  • easeOutCubic
  • easeOutQuart
  • easeOutQuint
  • easeOutSine
  • easeOutExpo
  • easeOutCirc
  • easeOutElastic
  • easeOutBack
  • easeOutBounce

Ease-In-Out progress value increases in speed and slows down back afterwards

  • easeInOutQuad
  • easeInOutCubic
  • easeInOutQuart
  • easeInOutQuint
  • easeInOutSine
  • easeInOutExpo
  • easeInOutCirc
  • easeInOutElastic
  • easeInOutBack
  • easeInOutBounce
How can I import individual easings?

Every easing bundled with ScrollToSmooth can be imported individually by

import { easingName } from 'scrolltosmooth';
new scrollToSmooth('a', {
  ...
  easing: easingName,
  ...
});
Can I use easing functions from another library?

You can import other easing functions and use it with ScrollToSmooth.
The only requirement is that the method must take only one parameter representing the absolute progress of the animation in the bounds of 0 (beginning of the animation) and 1 (end of animation).

Example:

import { cubic } from 'js-easing-library';
new scrollToSmooth('a', {
  ...
  easing: cubic,
  ...
});

You can also write your own easing functions:

Example:

new scrollToSmooth('a', {
  ...
  easing: (t) => t * t, // easeInQuad
  ...
});

onScrollStart

Type: function
Default: null

Callback function to be executed when the scrolling animation has started.

onScrollUpdate

Type: function
Default: null

Callback function to be executed while the scrolling animation runs.

onScrollEnd

Type: function
Default: null

Callback function to be executed when the scrolling animation has finished.

Methods

After creating a new instance of scrollToSmooth

let smoothScroll = new scrollToSmooth(document.querySelector('.scrollToSmooth-link'));

You can use the following public methods to interact with it:

init:

Initialize

smoothScroll.init();

scrollTo:

You can use the scrollTo method to animate the scrolling to a specific element on the page:

smoothScroll.scrollTo('.your-selector');
// OR
smoothScroll.scrollTo(document.querySelector('.your-selector'));

scrollTo can be also used with a numeric value.

Example:

smoothScroll.scrollTo(50);

scrollBy

scrollBy can be used just like scrollTo to trigger a scroll animation.
The only difference is you don't need a target element. Instead you can scroll by a fixed amount of pixels that gets added to the current scrollY.

smoothScroll.scrollBy(150);

cancelScroll:

while the animation is running you can call cancelScroll whenever you want to stop it immediately

smoothScroll.cancelScroll();

update:

Update the settings after initialization.

smoothScroll.update({
  duration: 1000,
  fixedHeader: '#my-header-element'
});

destroy:

Destroy the current instance of scrollToSmooth. You can then reinitialize the instance with the init method.

smoothScroll.destroy();

Callbacks

onScrollStart:

new scrollToSmooth('a', {
  ...
  onScrollStart: (data) => {  },
  ...
});

data contains an object with values for startPosition and endPosition

onScrollUpdate:

new scrollToSmooth('a', {
  ...
  onScrollUpdate: (data) => {  },
  ...
});

data contains an object with values for startPosition, currentPosition and endPosition

onScrollEnd:

new scrollToSmooth('a', {
  ...
  onScrollEnd: (data) => {  },
  ...
});

data contains an object with values for startPosition and endPosition

Custom Events

TODO: custom events section

Noteworthy features

Animating from the very top or bottom with special easings

ScrollToSmooth adds custom elements to the top and bottom of the page. These elements will simulate expanded boundaries of your document while the scroll animation is running. That means the animation wont stop on the bottom of your page when the easing function would normally exceed the documents height.

Working with fixed Headers

If your page has a fixed header scrollToSmooth can use this element and add an offset before each section.
This ensures that the final scroll position does not cover any elements that should normally be visible.

Usage:

<div id="fixed-header">
  <img src="path/to/your/logo.svg" />
</div>
new scrollToSmooth('a', {
  ...
  offset: '#fixed-header',
  // or
  offset: document.getElementById('fixed-header'),
  ...
});

Custom scroll triggers

You don't need real links to animate scrolling using ScrollToSmooth.
For example, if you want to use span tags as animation triggers you could do it like:

<nav>
  <span data-scrollto="#section-1">Scroll to section 1</span>
  <span data-scrollto="#section-2">Scroll to section 2</span>
</nav>
<section id="section-1"></section>
<section id="section-2"></section>
new scrollToSmooth('[data-scrollto]');

You can also define custom scroll triggers for specific events.
For example if you want to scroll down the page for 100px when clicking the spacebar:

const scrolltosmooth = new scrollToSmooth('a');

document.addEventListener('keyup', event => {
  if (event.keyCode === 32) {
    scrolltosmooth.scrollBy(100);
  }
})

Accessibility (a11y)

ScrollToSmooth automatically handles focus management after scrolling to an element so that the normal keyboard navigation won't get interrupted.

Browser Compatibility

Chrome Firefox IE Edge Opera Safari
15+ 7+ 10+ 12+ 15+ 6+

Polyfills

Support for older browsers requires a polyfill for requestAnimationFrame()

Support me

If this project is helpfull you might support me out with a cup of coffee 🤗

paypal.me


forthebadge

Comments
  • console.log in dist

    console.log in dist

    added in last release:

    • https://github.com/bfiessinger/scrollToSmooth/commit/872191a6adc9a02366ecbaa3762dcdf5410a8e75#diff-969f056e85a7d23f1fa9725f5e384447004670c88820ee94ffec56a4f2c4caac
    opened by TheJaredWilcurt 1
  • Bump ini from 1.3.5 to 1.3.8

    Bump ini from 1.3.5 to 1.3.8

    Bumps ini from 1.3.5 to 1.3.8.

    Commits
    • a2c5da8 1.3.8
    • af5c6bb Do not use Object.create(null)
    • 8b648a1 don't test where our devdeps don't even work
    • c74c8af 1.3.7
    • 024b8b5 update deps, add linting
    • 032fbaf Use Object.create(null) to avoid default object property hazards
    • 2da9039 1.3.6
    • cfea636 better git push script, before publish instead of after
    • 56d2805 do not allow invalid hazardous string as section name
    • See full diff in compare view
    Maintainer changes

    This version was pushed to npm by isaacs, a new releaser for ini since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump lodash from 4.17.15 to 4.17.19

    Bump lodash from 4.17.15 to 4.17.19

    Bumps lodash from 4.17.15 to 4.17.19.

    Release notes

    Sourced from lodash's releases.

    4.17.16

    Commits
    Maintainer changes

    This version was pushed to npm by mathias, a new releaser for lodash since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump acorn from 7.1.0 to 7.2.0

    Bump acorn from 7.1.0 to 7.2.0

    Bumps acorn from 7.1.0 to 7.2.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump acorn from 7.1.0 to 7.1.1

    Bump acorn from 7.1.0 to 7.1.1

    Bumps acorn from 7.1.0 to 7.1.1.

    Commits
    • 6d19489 Mark release 7.1.1
    • 793c0e5 More rigorously check surrogate pairs in regexp validator
    • b5c1787 Fix incorrect comment in regexp parser
    • 12ae8fe Parameterize dummy value and export isDummy
    • fa3ad8c Further refine acorn-walk types
    • 1d50286 Fix some errors in walk types
    • 97801f0 Mark acorn-walk 7.1.1
    • e9372c1 Further clean up walker types
    • de6edeb Remove NarrowNode from walk.d.ts
    • 1d85e7c Fix: acorn-walk type work with acorn's
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • font-awesome icons not working with anchor href targetAttribute.

    font-awesome icons not working with anchor href targetAttribute.

    It seems that there is not an option for icons, in this case font-awesome icons, its there is an option provided to solve this issue ?

    When you click on a anchor attribute, to scroll to destination, it breaks. only does it with anchors but not if you click on the icon itself. Ex:

      <a id="scroll-Btn" data-easing="linear" href="#top">
          <i class="fas fa-hand-point-up fa-2x"></i> <!-- this wont work onclick -->
        </a>
    
    opened by IvanMendieta 0
  • Bump terser from 5.6.0 to 5.14.2

    Bump terser from 5.6.0 to 5.14.2

    Bumps terser from 5.6.0 to 5.14.2.

    Changelog

    Sourced from terser's changelog.

    v5.14.2

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    • Source maps improvements (#1211)
    • Performance improvements in long property access evaluation (#1213)

    v5.14.1

    • keep_numbers option added to TypeScript defs (#1208)
    • Fixed parsing of nested template strings (#1204)

    v5.14.0

    • Switched to @​jridgewell/source-map for sourcemap generation (#1190, #1181)
    • Fixed source maps with non-terminated segments (#1106)
    • Enabled typescript types to be imported from the package (#1194)
    • Extra DOM props have been added (#1191)
    • Delete the AST while generating code, as a means to save RAM

    v5.13.1

    • Removed self-assignments (varname=varname) (closes #1081)
    • Separated inlining code (for inlining things into references, or removing IIFEs)
    • Allow multiple identifiers with the same name in var destructuring (eg var { a, a } = x) (#1176)

    v5.13.0

    • All calls to eval() were removed (#1171, #1184)
    • source-map was updated to 0.8.0-beta.0 (#1164)
    • NavigatorUAData was added to domprops to avoid property mangling (#1166)

    v5.12.1

    • Fixed an issue with function definitions inside blocks (#1155)
    • Fixed parens of new in some situations (closes #1159)

    v5.12.0

    • TERSER_DEBUG_DIR environment variable
    • @​copyright comments are now preserved with the comments="some" option (#1153)

    v5.11.0

    • Unicode code point escapes (\u{abcde}) are not emitted inside RegExp literals anymore (#1147)
    • acorn is now a regular dependency

    v5.10.0

    • Massive optimization to max_line_len (#1109)
    • Basic support for import assertions
    • Marked ES2022 Object.hasOwn as a pure function
    • Fix delete optional?.property
    • New CI/CD pipeline with github actions (#1057)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump minimist from 1.2.5 to 1.2.6

    Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v3.0.2)
Owner
Bastian Fießinger
Don't hate the player delete the game!
Bastian Fießinger
A simple smooth scrolling using 100% vanilla JavaScript.

SmoothScroll.js A simple smooth scrolling using 100% vanilla JavaScript, and it's only 3kb! > Demo Usage // index.html <html> <head> <link rel="

Ray Chang 5 Aug 24, 2022
Lightweight and easy to use vanilla js library to add css animations to elements on scroll.

Scrollrisen Trigger css animations on scroll as elements enter the viewport. Zero dependencies, lightweight and easy to use and customize Installation

null 1 Oct 13, 2022
Script to fetch all NFT owners using moralis API. This script output is a data.txt file containing all owner addresses of a given NFT and their balances.

?? Moralis NFT Snapshot Moralis NFT API will only return 500 itens at a time when its is called. For that reason, a simple logic is needed to fetch al

Phill Menezes 6 Jun 23, 2022
Script to synchronize between a Notion database and Google Calendar both ways. Uses Google App Script.

Yet Another Two Way Notion-Google Calendar Sync Script A script to sync events between Google calendar and a Notion database. Features! Google App Scr

kat 41 Jan 7, 2023
A collection of preloaded and essential files that makes the website more attractive, smooth and user friendly

Web-Docs A collection of preloaded and essential files that makes the website more attractive, smooth and user friendly How to use: git clone https://

MAINAK CHAUDHURI 23 Dec 17, 2022
SafeCycle—a tool that keeps cyclists safe. Gone are days of weaving through busy city streets, SafeCycle finds all the bike routes for you to ensure a smooth ride wherever you want to go.

Inspiration Biking—an everyday form of travel for students and professionals across the globe. On-campus, back home, and with the people that we know

Ryan Hu 2 May 2, 2022
A powerful javascript library to create amazing and smooth effects for the mouse cursor on your website.

Cuberto Mouse Follower A powerful javascript library to create amazing and smooth effects for the mouse cursor on your website. Dependencies GSAP v3 (

Cuberto 410 Dec 30, 2022
A-Frame components for smooth locomotion and snap turning

A-Frame locomotion A collection of A-Frame components, systems and primitives that enable all sorts of locomotion in VR. It't built to be modular, fle

Noeri Huisman 18 Sep 1, 2022
Smooth mobile touch slider for Mobile WebApp, HTML5 App, Hybrid App

iSlider iSlider is a lightweight, high-performant, no library dependencies cross-platform slide controller. It can help handling most sliding effects,

Baidu BEFE 1.7k Nov 25, 2022
Smooth subdivision surface modifier for use with three.js BufferGeometry.

Three Subdivide This modifier uses the Loop (Charles Loop, 1987) subdivision surface algorithm to smooth modern three.js BufferGeometry. — Live Demo —

Stephens Nunnally 26 Dec 3, 2022
A blazingly fast Bun.js filesystem router, with an unpleasantly smooth experience!

Oily A blazingly fast Bun.js filesystem router, with an unpleasantly smooth experience! Installation · Usage · Examples · Discord Installation Once yo

Aries 22 Dec 19, 2022
Smooth scrolling effect (while using mouse wheel). No jQuery or other unnecessary stuff needed.

scrooth Smooth scrolling effect (while using mouse wheel). No jQuery or other unnecessary stuff needed. Why? I needed that, and I was unable to find p

Rafał Spiżewski 20 Aug 29, 2022
Generate smooth, consistent and always-sexy box-shadows, no matter the size, ideal for design token generation.

smooth-shadow Generate smooth, consistent and always-sexy box-shadows, no matter the size, ideal for design token generation. Demo As Tobias already p

Thomas Strobl 4 Oct 15, 2022
This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js

This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js. But in most cases, I would recommend you to use something like Express in a production project for productivity purposes.

Eduardo Dantas 7 Jul 19, 2022
Animate on scroll library

❗ ❗ ❗ This is README for aos@next ❗ ❗ ❗ For last stable release (v2) go here ?? Demo ?? Codepen Examples Different built-in animations With anchor set

Michał Sajnóg 22.3k Jan 2, 2023
Conveyer adds Drag gestures to your Native Scroll.

Conveyer Demo / Documentation / Other components Conveyer adds Drag gestures to your Native Scroll. ?? ?? ?? ✨ Features You can use Native Scroll-like

NAVER 70 Dec 15, 2022
CSS3 list scroll effects

stroll.js – because it scrolls, and trolls. A collection of CSS list scroll effects. Works in browsers with support for CSS 3D transforms including a

Hakim El Hattab 4.3k Jan 3, 2023
Animate elements as they scroll into view.

Animate elements as they scroll into view. Introduction ScrollReveal is a JavaScript library for easily animating elements as they enter/leave the vie

null 21.2k Jan 4, 2023