Automatically make same-page links scroll smoothly

Overview

Smooth Scroll Plugin

Allows for easy implementation of smooth scrolling for same-page links.

NPM

Note: Version 2.0+ of this plugin requires jQuery version 1.7 or greater.

Setup

ES Module

npm install jquery-smooth-scroll

or

yarn add jquery-smooth-scroll

Then, use import jquery-smooth-scroll;

Note: This assumes window.jQuery is available at time of import.

CDN

<!--
  You can get a URL for jQuery from
  https://code.jquery.com
-->
<script src="SOME_URL_FOR_JQUERY"></script>
<script src="https://cdn.statically.io/gh/kswedberg/jquery-smooth-scroll/3948290d/jquery.smooth-scroll.min.js"></script>

Copy/paste

Grab the code and paste it into your own file:

Demo

You can try a bare-bones demo at kswedberg.github.io/jquery-smooth-scroll/demo/

Features

$.fn.smoothScroll

  • Works like this: $('a').smoothScroll();
  • Specify a containing element if you want: $('#container a').smoothScroll();
  • Exclude links if they are within a containing element: $('#container a').smoothScroll({excludeWithin: ['.container2']});
  • Exclude links if they match certain conditions: $('a').smoothScroll({exclude: ['.rough','#chunky']});
  • Adjust where the scrolling stops: $('.backtotop').smoothScroll({offset: -100});
  • Add a callback function that is triggered before the scroll starts: $('a').smoothScroll({beforeScroll: function() { alert('ready to go!'); }});
  • Add a callback function that is triggered after the scroll is complete: $('a').smoothScroll({afterScroll: function() { alert('we made it!'); }});
  • Add back button support by using a hashchange event listener. You can also include a history management plugin such as Ben Alman's BBQ for ancient browser support (IE < 8), but you'll need jQuery 1.8 or earlier. See demo/hashchange.html or demo/bbq.html for an example of how to implement.

Options

The following options, shown with their default values, are available for both $.fn.smoothScroll and $.smoothScroll:

{
  offset: 0,

  // one of 'top' or 'left'
  direction: 'top',

  // only use if you want to override default behavior or if using $.smoothScroll
  scrollTarget: null,

  // automatically focus the target element after scrolling to it
  // (see https://github.com/kswedberg/jquery-smooth-scroll#focus-element-after-scrolling-to-it for details)
  autoFocus: false,

  // string to use as selector for event delegation
  delegateSelector: null,

  // fn(opts) function to be called before scrolling occurs.
  // `this` is the element(s) being scrolled
  beforeScroll: function() {},

  // fn(opts) function to be called after scrolling occurs.
  // `this` is the triggering element
  afterScroll: function() {},

  // easing name. jQuery comes with "swing" and "linear." For others, you'll need an easing plugin
  // from jQuery UI or elsewhere
  easing: 'swing',

  // speed can be a number or 'auto'
  // if 'auto', the speed will be calculated based on the formula:
  // (current scroll position - target scroll position) / autoCoefficient
  speed: 400,

  // autoCoefficent: Only used when speed set to "auto".
  // The higher this number, the faster the scroll speed
  autoCoefficient: 2,

  // $.fn.smoothScroll only: whether to prevent the default click action
  preventDefault: true

}

The options object for $.fn.smoothScroll can take two additional properties: exclude and excludeWithin. The value for both of these is an array of selectors, DOM elements or jQuery objects. Default value for both is an empty array.

Setting options after initial call

If you need to change any of the options after you've already called .smoothScroll(), you can do so by passing the "options" string as the first argument and an options object as the second.

$.smoothScroll

  • Utility method works without a selector: $.smoothScroll()

  • Can be used to scroll any element (not just document.documentElement / document.body)

  • Doesn't automatically fire, so you need to bind it to some other user interaction. For example:

    $('button.scrollsomething').on('click', function() {
      $.smoothScroll({
        scrollElement: $('div.scrollme'),
        scrollTarget: '#findme'
      });
      return false;
    });
  • The $.smoothScroll method can take one or two arguments.

    • If the first argument is a number or a "relative string," the document is scrolled to that position. If it's an options object, those options determine how the document (or other element) will be scrolled.
    • If a number or "relative string" is provided as the second argument, it will override whatever may have been set for the scrollTarget option.
    • The relative string syntax, introduced in version 2.1, looks like "+=100px" or "-=50px" (see below for an example).

Additional Option

The following option, in addition to those listed for $.fn.smoothScroll above, is available for $.smoothScroll:

{
  // The jQuery set of elements you wish to scroll.
  //  if null (default), $('html, body').firstScrollable() is used.
  scrollElement: null
}

Note:

If you use $.smoothScroll, do NOT use the body element (document.body or $('body')) alone for the scrollElement option. Probably not a good idea to use document.documentElement ($('html')) by itself either.

$.fn.scrollable

  • Selects the matched element(s) that are scrollable. Acts just like a DOM traversal method such as .find() or .next().
  • Uses document.scrollingElement on compatible browsers when the selector is 'html' or 'body' or 'html, body'.
  • The resulting jQuery set may consist of zero, one, or multiple elements.

$.fn.firstScrollable

  • Selects the first matched element that is scrollable. Acts just like a DOM traversal method such as .find() or .next().
  • The resulting jQuery set may consist of zero or one element.
  • This method is used internally by the plugin to determine which element to use for "document" scrolling: $('html, body').firstScrollable().animate({scrollTop: someNumber}, someSpeed)
  • Uses document.scrollingElement on compatible browsers when the selector is 'html' or 'body' or 'html, body'.

Examples

Scroll down one "page" at a time (v2.1+)

With smoothScroll version 2.1 and later, you can use the "relative string" syntax to scroll an element or the document a certain number of pixels relative to its current position. The following code will scroll the document down one page at a time when the user clicks the ".pagedown" button:

$('button.pagedown').on('click', function() {
  $.smoothScroll('+=' + $(window).height());
});

Smooth scrolling on page load

If you want to scroll to an element when the page loads, use $.smoothScroll() in a script at the end of the body or use $(document).ready(). To prevent the browser from automatically scrolling to the element on its own, your link on page 1 will need to include a fragment identifier that does not match an element id on page 2. To ensure that users without JavaScript get to the same element, you should modify the link's hash on page 1 with JavaScript. Your script on page 2 will then modify it back to the correct one when you call $.smoothScroll().

For example, let's say you want to smooth scroll to <div id="scrolltome"></div> on page-2.html. For page-1.html, your script might do the following:

$('a[href="page-2.html#scrolltome"]').attr('href', function() {
  var hrefParts = this.href.split(/#/);
  hrefParts[1] = 'smoothScroll' + hrefParts[1];
  return hrefParts.join('#');
});

Then for page-2.html, your script would do this:

// Call $.smoothScroll if location.hash starts with "#smoothScroll"
var reSmooth = /^#smoothScroll/;
var id;
if (reSmooth.test(location.hash)) {
  // Strip the "#smoothScroll" part off (and put "#" back on the beginning)
  id = '#' + location.hash.replace(reSmooth, '');
  $.smoothScroll({scrollTarget: id});
}

Focus element after scrolling to it.

Imagine you have a link to a form somewhere on the same page. When the user clicks the link, you want the user to be able to begin interacting with that form.

  • As of smoothScroll version 2.2, the plugin will automatically focus the element if you set the autoFocus option to true.

    $('div.example').smoothScroll({
      autoFocus: true
    });
  • In the future, versions 3.x and later will have autoFocus set to true by default.

  • If you are using the low-level $.smoothScroll method, autoFocus will only work if you've also provided a value for the scrollTarget option.

  • Prior to version 2.2, you can use the afterScroll callback function. Here is an example that focuses the first input within the form after scrolling to the form:

$('a.example').smoothScroll({
  afterScroll: function(options) {
    $(options.scrollTarget).find('input')[0].focus();
  }
});

For accessibility reasons, it might make sense to focus any element you scroll to, even if it's not a natively focusable element. To do so, you could add a tabIndex attribute to the target element (this, again, is for versions prior to 2.2):

$('div.example').smoothScroll({
  afterScroll: function(options) {
    var $tgt = $(options.scrollTarget);
    $tgt[0].focus();

    if (!$tgt.is(document.activeElement)) {
      $tgt.attr('tabIndex', '-1');
      $tgt[0].focus();
    }
  }
});

Notes

  • To determine where to scroll the page, the $.fn.smoothScroll method looks for an element with an id attribute that matches the <a> element's hash. It does not look at the element's name attribute. If you want a clicked link to scroll to a "named anchor" (e.g. <a name="foo">), you'll need to use the $.smoothScroll method instead.
  • The plugin's $.fn.smoothScroll and $.smoothScroll methods use the $.fn.firstScrollable DOM traversal method (also defined by this plugin) to determine which element is scrollable. If no elements are scrollable, these methods return a jQuery object containing an empty array, just like all of jQuery's other DOM traversal methods. Any further chained methods, therefore, will be called against no elements (which, in most cases, means that nothing will happen).

Contributing

Thank you! Please consider the following when working on this repo before you submit a pull request:

  • For code changes, please work on the "source" file: src/jquery.smooth-scroll.js.
  • Style conventions are noted in the jshint grunt file options and the .jscsrc file. To be sure your additions comply, run grunt lint from the command line.
  • If possible, please use Tim Pope's git commit message style. Multiple commits in a pull request will be squashed into a single commit. I may adjust the message for clarity, style, or grammar. I manually commit all merged PRs using the --author flag to ensure that proper authorship (yours) is maintained.
Comments
  • Safari 6.0 that shipped with Mountain Lion breaks functionality.

    Safari 6.0 that shipped with Mountain Lion breaks functionality.

    Hi There,

    I've been using your wonderful plugin for a site I've developed for a bit over a year and it works great. However, after upgrading to OSX Mountain Lion (10.5.8), it appears that the code I've used to implement your plugin stopped working in Safari 6 (8536.25) that ships with Mountain Lion. I'm not sure if it's your plugin code, or mine. The plugin works in all other browsers, except Safari 6. Here is how I've implemented the plugin:

    <a onclick="scrollTo('.plateshade')">See details below.</a>

    And scrollTo looks like this:

    function scrollTo(anchor, speed)
    {
        //alert("Smooth scroll to anchor: " + anchor);
        $.smoothScroll({
    
            scrollTarget: $(anchor),
            offset: -25,
            speed: speed,
            easing: 'swing'
        });
    }
    

    The above code worked fine in Safari prior to the Mountain Lion upgrade. Not sure why the upgrade would keep it from working though. Any suggestions where I should start fixing the problem?

    Thanks!

    --Arie

    opened by ariestav 13
  • Adding hash to URL after scroll?

    Adding hash to URL after scroll?

    Hi,

    I looked in the examples, but I couldn't find any reference to the script automatically adding the hash value to the URL after scroll.

    For example, if I have a link such as #about, I would like the URL to be updated so that when I click the #about link, and when it finishes scrolling, the address bar shows example.com/#about

    Thank you!

    opened by jgclarke 13
  • smooth-scroll is causing a conflit

    smooth-scroll is causing a conflit

    Dear Karl, thanks for your lovely plugin ;)

    I have started to use it but it's causing me a conflict with another scrollable function I use (jquerytools) :/ how can I fix this?

    Thanks a lot and happy holidays ;)

    Needs example 
    opened by Redani 11
  • Load different page and then smooth scroll within different page

    Load different page and then smooth scroll within different page

    Hi, thanks for jquery-smooth-scroll. I think it is excellent.

    I would like the smooth scrolling to take place on a different page. So my element on different-page.html looks like

    <a href="/index.html#to-chapter1"> To Chapter 1</a>
    

    I thought I can use the beforeScroll-function.

    // smooth-scroll
    $('a[href*=#]:not([href=#])').click(function() {
        $.smoothScroll({
            beforeScroll: function () {location.replace("/index.html");},
            offset: -120,
            scrollTarget: this.hash
        });
        return false;
    });
    

    However, smooth-scroll does not wait for the beforeScroll-function to be completed, i.e. the page to be loaded. Is there a way to make this happen? Thanks

    opened by karland 11
  • Error like scrollTarget: link.hash

    Error like scrollTarget: link.hash

    I'm not sure but there is an issue such as NOT a function. How is this possible as nav links work and scroll but opposite it will be validated Javascript code with an error. Do you have any idea what is wrong? Website is not published to show you source code as it is testing. Error: TypeError: jQuery.smoothScroll is not a function Source File: Line: scrollTarget: link.hash jQuery(document).ready(function() { jQuery('ul.mymenu1 a').smoothScroll(); jQuery('ul.scrollto1').click(function(event) { event.preventDefault(); var link = this; jQuery.smoothScroll({ scrollTarget: link.hash }); }); });

    opened by toplisek 11
  • How to Prevent Scrolling to Top of the Page If Target Not Found?

    How to Prevent Scrolling to Top of the Page If Target Not Found?

    Hi Karl,

    First of all, thank you so much for sharing this fantastic plugin.

    I have not fully tested this but, at least in some cases, when the target (e.g. a specific Id or Class) is not found then a scroll-to-top-of-the-page is performed. Can this behavior be prevented and just leave it to do no scroll at all?

    Thanks.

    Best Regards, Diego

    opened by diegocanal 10
  • BBQ with offset

    BBQ with offset

    Hi,

    I have a bootstrap website, with Smooth Scrool with Back Button Support. Currently, when clicking on a button, I cannot see the first 60px of my div (the space of the navbar. I have seen an offset option, but it dosen't seen to be working. I am not sure were to put this. This is the only code that I added for the plugin (except of the base script):

    $(document)
        .on('click', 'a[href*="#"]', function() {
          if ( this.hash && this.pathname === location.pathname ) {
            $.bbq.pushState( '#/' + this.hash.slice(1) );
            return false;
          }
        })
        .ready(function() {
          $(window).bind('hashchange', function(event) {
            var tgt = location.hash.replace(/^#\/?/,'');
            if ( document.getElementById(tgt) ) {
              $.smoothScroll({scrollTarget: '#' + tgt});
            }
          });
          $(window).trigger('hashchange');
        });
    

    Where do I need to but the Offset settings?

    Here is the demo : http://7freres.com/services-dete-new#/construction

    Thank you!

    opened by FelixINX 9
  • Android/iOS

    Android/iOS

    Hi,

    We found some troubles using SmoothScroll on Android devices and iOS7 in Safari. iOS Chrome is working. But the other ones are not working correctly as nothing happens on the device when clicking on a #tag link. Any insights on that? We deactivated the feature for mobile devices for now.

    Many thanks, Wolfgang

    opened by wschwaiger 8
  • Doesnt work in Opera

    Doesnt work in Opera

    I tried the script in chrome, firefox, safari, ie but it doesnt work in opera.. My version of opera is 11.50 and using Windows..

    I really like the this one, probably the best of scripts for scrolling out there, please fix this issue :/

    opened by Sh4d0Wx 8
  • Scroll x pixels

    Scroll x pixels

    Hi, and thanks for this lovely plugin :)

    Is it possible to scroll repeatedly X pixels? just like shown on this fiddle: http://jsfiddle.net/xEFq5/13/

    thanks

    opened by Redani 7
  • First scroll on mobile scrolls to far

    First scroll on mobile scrolls to far

    First of all thanks a lot for making this great plugin!

    When I first load up the page (on mobile, iPhone 5s) and click on a link from the collapsed navbar(bootstrap) it will scroll to far down past the div I want to stop at. Any time I click after that it seems to work fine. I messed with the offset attempting to set it to the navbar height but this didn't seem to fix the issue.

    I've looked at a bunch of other issues including #50 #63 #34 but can't seem to get mine to work properly.

    I'm using StickUp (which disabling doesn't seem to fix the issue). I've used two other scroll libraries both of which seem to have the same problem so I'm very confused at what is going on.

    The code is https://github.com/ClarityFloats/ClarityFloats/tree/gh-pages/flafy/js in the script.js file to init Smooth Scroll.

    Hosted at http://clarityfloats.com

    Thanks!

    opened by Connor-Knabe 7
  • Strip smoothScroll from urlPath

    Strip smoothScroll from urlPath

    Hi there, i was cleaning a site a bit up and noticed that when i use the links to references on other pages, smoothScroll is added in the url path. Did a simple fix for that.

    How it was Screen Shot 2020-03-03 at 18 54 49

    After the fix Screen Shot 2020-03-03 at 18 54 28

    Adjusted code

    $(document).ready(function () {
    	// Call $.smoothScroll if location.hash starts with "#smoothScroll"
    	//var reSmooth = /^#smoothScroll/;
    	var reSmooth = /^#smoothScroll/;
    	var tag = /^#/;
    	var id;
    	if (reSmooth.test(location.hash)){
    		// ADD FOCUS FOR TAG
    		id = '#' + location.hash.replace(reSmooth, '');
    		$(id).css('border-bottom', '4px solid #00aeef');
    		$(id).css('padding-bottom', '1px');
    
    	}
    	
    	if (reSmooth.test(location.hash)) {
    		// Strip the "#smoothScroll" part off (and put "#" back on the beginning)
    		id = '#' + location.hash.replace(reSmooth, '');
    		// Strip the "#smoothScroll" part off path 
    		location.hash = location.hash.replace(reSmooth, '');
    		$.smoothScroll({
    			scrollTarget: id,
    			offset: -100
    		});
    	}
    	else if (tag.test(location.hash)) {
    		// Strip the "#smoothScroll" part off (and put "#" back on the beginning)
    		id = location.hash;
    		// Strip the "#smoothScroll" part off path
    		location.hash = location.hash.replace(reSmooth, '');
    		$.smoothScroll({
    			scrollTarget: id,
    			offset: -100
    		});
    	}
    });
    
    opened by schroef 0
  • Improvement suggestion: allow more control over  speed Auto (option) formula

    Improvement suggestion: allow more control over speed Auto (option) formula

    Hi Karl,

    When having very long pages the (current scroll position - target scroll position) / autoCoefficient formula does not provide us with enough control to get a reasonable balance between anchor links that have their targets very close to them and the ones that have their targets far away from them, i.e., If:

    • autoCoefficient is set to a low value, when anchor links with distant targets are clicked, the resulting smooth scrolling is painfully slow.
    • autoCoefficient is set to a value high enough to fix the aforementioned slowness, when anchor links with closer targets are clicked, the resulting smooth scrolling is too fast –almost seems instantaneous (as if it wasn't smooth)–.

    I suggest to create an extra option, apart from autoCoefficient so we'd end up with the formula: (current scroll position - target scroll position + NewOption) / autoCoefficient

    I've tried it and it works much better, for example, for autoCoefficient: 9 I have modified the code into:

    speed = (delta + 20000) / opts.autoCoefficient;
        }
    

    You can see it in action here: 28 ejemplos de modificación de medidas por un abogado en Madrid. Please, try the anchor links:

    1. Cambios que te afectan a ti o a tu ex (sección 2)
    2. Cambios que afectan a tus hijos (sección 3)
    3. Cambios legales o jurisprudenciales (sección 4)

    Thanks!

    opened by diegocanal 2
  • The issue with the substitute symbol. I can't figure it out.

    The issue with the substitute symbol. I can't figure it out.

    Hi bro https://yadi.sk/d/UfBZbjUPJcD3Kw - example

    In this example, I want to remove the slash "/". It is necessary that after the " # "was not"/", and everything else should remain the same. I'm a very bad programmer. Please help me.

    opened by alexey-saransk 1
  • Using smoothScroll via NPM

    Using smoothScroll via NPM

    I've installed this script using npm on my installation like this: npm install jquery-smooth-scroll. Now, in my javascript file i'm using this script like this:

    import smoothScroll from 'jquery-smooth-scroll'
    
    $('#page-controls .page-control.go-to-top').smoothScroll({
      offset: -150,
      speed: 600
    });
    

    The issue is, when I run the compiled (using babelify) js code this code throws the following error in the browser: smoothScroll is not a function

    When I see my compiled .js file I can see that jquery.smooth-scroll.js is imported in it but still I get this error. Can you please tell what could be the issue here?

    opened by imfaisalkh 5
  • scroll to the top of the page

    scroll to the top of the page

    Hi, I'd like to scroll to the top of the page with the following tag <a href="#"> or <a href="#top">, but there is not smooth animation. Of course, when I wrote <body id="top"> and with <a href="#top">, it works.

    According to the specification, href="#top" and href="#"means to link to the top of the page. cf. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a

    You can use href="#top" or the empty fragment href="#" to link to the top of the current page. This behavior is specified by HTML5.

    So, I suggest that it will work without <body id="top">. Thanks.

    opened by kaji2 0
  • Issue with linking to homepage from inside page

    Issue with linking to homepage from inside page

    Hey,

    I have this plugin on a site, which was just a single page layout. We've since added a couple of other pages but when i click on a link from the inside page it doesn't redirect to the homepage.

    For example, say I'm on the page inside.html, and the menu has a link like <a href="/#about"... If I click on the link from the homepage it works as expected. But if I click on the link from the inside.html page it doesn't. I would expect it to redirect me back to the homepage and then scroll down to the about anchor.

    Any help/suggestions would be greatly appreciated.

    opened by Silverbug 2
Owner
Karl Swedberg
Karl Swedberg
Generate deterministic fake values: The same input will always generate the same fake-output.

import { copycat } from '@snaplet/copycat' copycat.email('foo') // => '[email protected]' copycat.email('bar') // => 'Thurman.Schowalter668@

Snaplet 201 Dec 30, 2022
✨ A cli can automatically export files of the same type

auto-export A cli can automatically export files Why When you want to export many files of the same type in one folder, you may cost a lot of time to

Frozen FIsh 22 Aug 11, 2022
A simple jQuery extension to make any HTML element sticky on scroll.

jquery.sticky.js A simple jQuery extension to make any HTML element sticky on scroll. Installation Just download the script and include it in your HTM

Achal Jain 2 Aug 22, 2022
Reveal CSS animation as you scroll down a page

WOW.js Reveal CSS animation as you scroll down a page. By default, you can use it to trigger animate.css animations. But you can easily change the set

Matt Delac 9.7k Jan 8, 2023
A javascript library to animate elements on scroll page events

ScrollJS by Sam Sirianni ScrollJS is a library written in Javascript. With ScrollJS you can animate elements on scroll events. Visit the ScrollJS webs

Sam Sirianni 1 Mar 21, 2021
infiniteScrollWithTemplate - JQuery plugin for ajax-enabled infinite page scroll / auto paging with template

jQuery Infinite With Template Plugin JQuery plugin for ajax-enabled infinite page scroll with template. If you like jQuery until now, this little libr

이삼구 2 Mar 19, 2021
A lightweight JavaScript utility to fade elements in and out of view on page scroll.

ScrollFade ScrollFade is used to fade elements in and out of view while scrolling through a page. Tag any elements you want to fade with the class scr

Jordan Trbuhovic 14 Dec 15, 2022
The awesomebooks project is a simple list, but separated into 3 parts and given a retro feel. The main page is where we can add books, and on another page we can see the list, and remove items. There is also a "contact-us" page.

Awesome Books This is the restructured version of the famous awesome-books project! Here you can find JavaScript broken into modules, using import-exp

Matt Gombos 12 Nov 15, 2022
Progressive Web App (PWA) built in Node.js & Express that automatically reloads/refreshes your browser, web page, and app when developing.

Expresso ☕️ Checks for changes in your source and automatically reloads your browser, or web page, and app window. Makes development easier. Report Bu

Start Rev Technology 3 Oct 6, 2022
Multiple users using the same leetcode account made easy!

LeetcodeSessionManager About This extension helps is multiple people using the same LeetCode account. It gets tiring when you create sessions(sub-acco

PAWAN JENU 34 Dec 20, 2022
Demo showcasing information leaks resulting from an IndexedDB same-origin policy violation in WebKit.

Safari 15 IndexedDB Leaks Description This demo showcases information leaks resulting from an IndexedDB same-origin policy violation in WebKit (a brow

FingerprintJS 101 Nov 5, 2022
The same as nx-post-mikro

NxPostVscode This project was generated using Nx. ?? Smart, Fast and Extensible Build System Adding capabilities to your workspace Nx supports many pl

Chau Tran 10 Apr 26, 2022
Use Hardhat & Foundry in the same project

Hardhat Foundry Starter This is a solidity starter template which lets you use both, Hardhat and Foundry. Why use both the tools? Foundry has some awe

Rajdeep Bharati 12 Aug 23, 2022
Taskem is a task manager that help you stay organized while boosting your creativity at the same time.

Taskem Introduction Taskem is a task manager that helps you stay organized while boosting your creativity at the same time. Our main goal is to help e

VarunBoi 8 Dec 25, 2022
Zero runtime type-safe CSS in the same file as components

macaron comptime-css is now called macaron! macaron is a zero-runtime and type-safe CSS-in-JS library made with performance in mind Powered by vanilla

Mokshit Jain 205 Jan 4, 2023
Tenzi is a dice game. The player needs to roll dice until they are all the same. Clicking on a dice, freezes it at its current value between rolls. Best scores are saved to local storage.

Roll until all dice are the same Try me! Technologies Used Description Tenzi is a dice game used to demonstrate the use of React Hooks (useState, useE

Michael Kolesidis 7 Nov 23, 2022
The ToDoList app let you create a task, added to a list of task, mark it as complete, and delete individual or multiple tasks at the same time

The ToDoList app let you create a task, added to a list of task, mark it as complete, and delete individual or multiple tasks at the same time. The app manipulate the Local-Storag so you can save your tasks there. Built with HTML, CSS and JavaScript. First practice using Webpack, Modules and tests with Jest

Tomas Milanesi 12 Jul 21, 2022
Aron 8 Dec 17, 2022
Skip a job if it already succeeded for the same repo state. Uses S3 for caching.

?? ♻️ S3 Cache Action First Run, Cold Cache Next Run, Cache Hit Description Allows to skip a job if it already succeeded for the same repo state. Uses

Pleo Open Source 8 Jul 22, 2022