Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

Overview

Modernizr

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

npm version Build Status codecov Inline docs

Modernizr tests which native CSS3 and HTML5 features are available in the current UA and makes the results available to you in two ways: as properties on a global Modernizr object, and as classes on the <html> element. This information allows you to progressively enhance your pages with a granular level of control over the experience.

Breaking changes with v4

  • Dropped support for node versions <= 10, please upgrade to at least version 12

  • Following tests got renamed:

    • class to es6class to keep in line with the rest of the es-tests
  • Following tests got moved in subdirectories:

    • cookies, indexeddb, indexedblob, quota-management-api, userdata moved into the storage subdirectory
    • audio moved into the audio subdirectory
    • battery moved into the battery subdirectory
    • canvas, canvastext moved into the canvas subdirectory
    • customevent, eventlistener, forcetouch, hashchange, pointerevents, proximity moved into the event subdirectory
    • exiforientation moved into the image subdirectory
    • capture, fileinput, fileinputdirectory, formatattribute, input, inputnumber-l10n, inputsearchevent, inputtypes, placeholder, requestautocomplete, validation moved into the input subdirectory
    • svg moved into the svg subdirectory
    • webgl moved into the webgl subdirectory
  • Following tests got removed:

    • touchevents: discussion
    • unicode: discussion
    • templatestrings: duplicate of the es6 detect stringtemplate
    • contains: duplicate of the es6 detect es6string
    • datalistelem: A dupe of Modernizr.input.list

New Asynchronous Event Listeners

Often times people want to know when an asynchronous test is done so they can allow their application to react to it. In the past, you've had to rely on watching properties or <html> classes. Only events on asynchronous tests are supported. Synchronous tests should be handled synchronously to improve speed and to maintain consistency.

The new API looks like this:

// Listen to a test, give it a callback
Modernizr.on('testname', function( result ) {
  if (result) {
    console.log('The test passed!');
  }
  else {
    console.log('The test failed!');
  }
});

We guarantee that we'll only invoke your function once (per time that you call on). We are currently not exposing a method for exposing the trigger functionality. Instead, if you'd like to have control over async tests, use the src/addTest feature, and any test that you set will automatically expose and trigger the on functionality.

Getting Started

  • Clone or download the repository
  • Install project dependencies with npm install

Building Modernizr

From javascript

Modernizr can be used programmatically via npm:

var modernizr = require("modernizr");

A build method is exposed for generating custom Modernizr builds. Example:

var modernizr = require("modernizr");

modernizr.build({}, function (result) {
  console.log(result); // the build
});

The first parameter takes a JSON object of options and feature-detects to include. See lib/config-all.json for all available options.

The second parameter is a function invoked on task completion.

From the command-line

We also provide a command line interface for building modernizr. To see all available options run:

./bin/modernizr

Or to generate everything in 'config-all.json' run this with npm:

npm start
//outputs to ./dist/modernizr-build.js

Testing Modernizr

To execute the tests using mocha-headless-chrome on the console run:

npm test

You can also run tests in the browser of your choice with this command:

npm run serve-gh-pages

and navigating to these two URLs:

http://localhost:8080/test/unit.html
http://localhost:8080/test/integration.html

Code of Conduct

This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.

License

MIT License

Comments
  • Detecting a mouse user

    Detecting a mouse user

    Let's use this ticket just to explore the ideaspace. Basically... is there a way to detect a mouse user?

    just random notes on detection in this area:

    touch evts & input exclusivity

    Can't make assumptions about input anymore...

    • Just because touch events are present doesn't mean the user is primarily using a touchscreen. Or that there is no mouse.
    • Just because there are touch events supported doesn't mean :hover styles will never be triggered.
    • Just because there is a mouse doesn't mean people can't also touch the screen.
    • ~33% of iPad users with VoiceOver enabled use an attached keyboard. (@stevefaulkner said this, iirc)

    http://www.html5rocks.com/en/mobile/touchandmouse/ by @cwilso is a must read for this space.

    (and when this ticket says "mouse user" it means currently using a mouse but may mid-session switch to touch)

    mousemove

    • mousemove doesnt fire as a touch events user uses the page...
    • however it does fire in this sequence when a user taps the screen
    • so maybe we can test the difference between the two?
      • evt.isTrusted from DOM 4 events may be interesting. Implemented in FF, but not in Webkit. isTrusted is kinda untrusted right now though
        • hypothetically it could tell the diff between the simulated mousemove and real one
      • in my tests: evt.which was 0 in real mousemove and 1 in fake mousemove (part of the tap). Why? I have no idea.
      • the first time it fires, does mousedown fire <50ms after mousemove fired? (following the tap evt sequence) downsides galore: race condition. yucky detection, but .. might be worthwhile?

    :hover

    :hover styles are never triggered by a touch user except for a brief moment during a tap.

    mouseenter / mouseleave


    cc @robcolburn @roblarsen

    Anyone please add any notes here that aid in the pursuit of detection of mouse users. Differences in event objects, user behavior heuristics, etc.

    opened by paulirish 100
  • Custom modernizr builds crash IE8

    Custom modernizr builds crash IE8

    We have experienced that custom, compressed modernizr builds crash IE8, resulting in showing this address in the addressbar: res://ieframe.dll/acr_error.html/#

    This is not happening in the compat modes of IE7 or IE8 in IE9.

    Unfortunately we can't really test this any further as we don't have a machine with IE8 installed. The machine we experienced this on, was a Windows XP machine of one of our partner companies.

    Using the uncompressed development version does work without errors: http://www.modernizr.com/downloads/modernizr-2.0.6.js

    opened by thasmo 64
  • Work in Progress: New build system and cleanup

    Work in Progress: New build system and cleanup

    OK, here we go!

    I had a chance to go through the whole system. Cleaned up some unused files, reorganized, and rewrote the build system as promised.

    This changes the API, which I'd like to get your feedback on. The cafe I'm working at is closing, so I'll expand a little on the benefits/reasoning tomorrow. Also, tests are currently broken but I'd like to nail down the API before I fix them.

    The positive code is mostly comments, readme, and modularization. And the new CLI.

    Can you explain what the use of generate-meta is? I've broken it a little and will fix up; knowing it's purpose will help with that.

    Everything's documented in the readme.md. More tomorrow.

    opened by robwierzbowski 62
  • 2.6.2 & Firefox (Win7) 15.0.1, window jumps to top of page on reload

    2.6.2 & Firefox (Win7) 15.0.1, window jumps to top of page on reload

    I have encountered a weird issue with Firefox 15.0.1 on Windows 7 64bit. Thankfully this is more of an annoyance and not as severe as the recent Safari bug that I read about, but I still think it is worth my reporting. Something changed between 2.6.1 and 2.6.2 that now results in the browser window jumping to the top of the page if you refresh/reload the page (whereas the correct behavior would be for the page to reload to the original scroll position). Going back to my copy of 2.6.1 fixes the issue in Firefox, so it is somehow related to a change in Modernizr (though that is not to say that it is definitely a bug). It appears that the problem does not appear in Chrome, Safari or IE9 (all on Win7).

    I've done some experimenting and narrowed down the config that results in the above behavior to be the following: http://modernizr.com/download/#-touch-teststyles-prefixes

    I believe the culprit is in the touch portion (or perhaps a combination of things) because I did a test with just http://modernizr.com/download/#-prefixes and that was fine, and had done another test that included teststyles which was also fine.

    I also did a test on another installation of Firefox and also with Add-Ons Disabled to try to verify it wasn't just my particular setup.

    As I said, this is more of an annoyance than an urgent thing, but it would be nice to have it fixed at some point.

    Thanks! :)

    opened by EnigmaSolved 45
  • Browserstack browserstack runner

    Browserstack browserstack runner

    I've removed android browsers until issue is resolved.

    IE7 is throwing the infamous operation aborted error, I tried this in a saucelabs IE7 and didn't get it.

    opened by ryanseddon 44
  • Modernizr.touch detects touch events not touch devices

    Modernizr.touch detects touch events not touch devices

    IE Mobile e.g. doesnt expose webkit touch events but is a touch device..

    what exactly does Modernizr.touch imply? We should agree so we can document it.

    opened by paulirish 44
  • IE 11 flexbox bug

    IE 11 flexbox bug

    IE 11 has recently made an error with Flexbox. It was / still is working fine in IE10, but the latest browser has made the CSS Feature unusable for those users.

    What happens:

    When an image is a child of a flex item, it doesn't resize the height to auto when specified, which doesn't keep the correct constraints when resizing for responsive elements.

    Attached is an example of this: screen shot 2014-04-11 at 3 27 40 pm

    Live example of the code in the screenshots: http://codepen.io/boostnewmedia/full/kvtoF

    Phil Walton ( Solved by Flexbox ) said "philwalton: @themiketee the most annoying thing is I reported it well before IE11 shipped and it didn’t make it in. Months later, it’s still not fixed."

    Known issue for Microsoft dating back to 10/1/2013: https://connect.microsoft.com/IE/feedback/details/802625/min-height-and-flexbox-flex-direction-column-dont-work-together-in-ie-10-11-preview#tabs

    They have dropped the ball again.

    opened by michaeltrilford 43
  • Declare test dependencies using AMD

    Declare test dependencies using AMD

    With #486 taken care of we have individual files for all core detects. Now we have to declare dependencies. @SlexAxton suggested AMD and there seems to be consensus on that. He suggested cheating a lil' bit by assigning results directly to Modernizr global.

    @paulirish asked Alex "for your AMD proposal, why wouldnt we return inside the modules and pull in the value as the dep?" And he said that's so we can ship the built version without any wrappers at all (almond or otherwise).

    Couple examples:

    define('canvastext', ['canvas'], function () {
      var ret;
      if (Modernizr.canvas){
        ret = document.createElement('canvas').getContext('2d').fillText == 'function';
      }
      Modernizr.canvastext = !!ret;
    });
    

    or CJS-style

    define(function (require) {
      require('canvas');
    
      var ret;
      if (Modernizr.canvas){
        ret = document.createElement('canvas').getContext('2d').fillText == 'function';
      }
      Modernizr.addTest('canvastext', ret);
    });
    
    opened by rupl 39
  • Need to discuss v3 development version

    Need to discuss v3 development version

    @SlexAxton @paulirish @ryanseddon @patrickkettner @joecritch

    Hi folks, thought we could do with a final decision on this.

    We’ve agreed that v3 won’t distinguish between “core” and “community” detects. So, what goes in the development version?

    • Do we still have a dev version, or encourage people to use a custom build (or grunt-modernizr) from the start?
    • If we do have a dev version, do we put every detect in the dev version? This would be ~60kB min’d (and growing), taking about 300ms (including async tests) on my MBA

    Obviously the concern is that some may deploy a heavy dev version to production… then we’ve contributed to someone having a bit of a shit experience on the web.

    Also worth considering what kind of build we’d expect HTML5 Boilerplate to include, as that’s probably an easy way to accidentally end up with a heavy Modernizr dev build in production.

    opened by stucox 34
  • Wrong flexbox detection on IE10?

    Wrong flexbox detection on IE10?

    Hi,

    In my example on IE10 Modernizr.flexbox return true but looks like IE10 it doesn't understand flexbox css. Or maybe I'm doing something wrong?

    Please take a look: http://jsfiddle.net/wGBL8/5/

    (On safari Modernizr.flexbox return false, but everything looks fine)

    opened by oskarwrobel 34
  • Allow individual detects to be require()’d

    Allow individual detects to be require()’d

    We’ve mentioned this a bit in the past, so let’s look at it properly.

    It’d be supercoolandawesome if devs can take advantage of our internal AMD structure to specify individual detects as module dependencies, e.g.:

    define(['modernizr/websockets'], function () {
        if (Modernizr.websockets) {
            // Do something with websockets
        }
    });
    

    One option would be a custom RequireJS plugin. But it feels like we should be able to do it without that too.

    What would be involved in making this work?

    opened by stucox 32
  • Bump qs from 6.7.0 to 6.11.0

    Bump qs from 6.7.0 to 6.11.0

    Bumps qs from 6.7.0 to 6.11.0.

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape

    6.10.1

    • [Fix] stringify: avoid exception on repeated object values (#402)

    6.10.0

    • [New] stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)
    • [New] parse: add allowSparse option for collapsing arrays with missing indices (#312)
    • [meta] fix README.md (#399)
    • [meta] only run npm run dist in publish, not install
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbols, tape
    • [Tests] fix tests on node v0.6
    • [Tests] use ljharb/actions/node/install instead of ljharb/actions/node/run
    • [Tests] Revert "[meta] ignore eclint transitive audit warning"

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"

    ... (truncated)

    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • 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] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    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
  • Empty prefix class

    Empty prefix class

    Type of bug Modernizr adds an empty prefix class to the <html> tag when using Add CSS classes option with prefix.

    How to Reproduce

    1. Select the Webp under the DOWNLOAD tab.
    2. Goto OPTIONS and select minify then in the input box for Add CSS classes add has-
    3. Download the build file.
    4. Include the modernizr-custom.js in the head section of the website.

    Expected behavior Expected classes in the <html> tag has-webp has-webp-alpha has-webp-animation has-webp-lossless

    Actual behavior Classes added to the <html> tag has- has-webp has-webp-alpha has-webp-animation has-webp-lossless

    opened by anita-chouhan 0
  • Animated AVIF

    Animated AVIF

    Which feature do you want to detect? Support for animated AVIF images, a.k.a. AVIF image sequences.

    Which browsers do support this feature? https://caniuse.com/avif

    Although all major browsers support AVIF for still images, only Chrome supports animated AVIF. Per @jensimmons’s tweet, Safari will support animated AVIF in Safari 16.1 (scheduled for release in October 2022).

    Until all browsers advertising AVIF support also support animations, this poses an interoperability problem where developers cannot rely on the browser to do format selection by using <picture> + <source>. A JavaScript feature test would help bridge this unfortunate gap.

    How could it be implemented? There’s existing tests for animated image formats:

    • Animated PNG: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/apng.js
    • Animated WebP: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/webp-animation.js

    I suspect we could follow these examples.

    Additional context A feature test for (static) AVIF support was added in #2539.

    detect needed 
    opened by mathiasbynens 3
  • compile: no such file or directory

    compile: no such file or directory

    I'm trying to compile modernizr using npm and a json file. I've added "canvas/canvas" as feature-detct, as reported in the configuration provided in the documentation,

    However, I obtain the error "no such file or directory" when I try to compile the library. The missing file is 'feature-detects/canvas/canvas.js' which is not shipped with the npm installation of modernizr but is present on the github repository.

    I'm using 3.12.0 version (latest on npm)

    opened by Polm90 1
  • Test for storagemanager ability to persist data

    Test for storagemanager ability to persist data

    Question

    Can a specific test be created to check if a browser can be triggered/forced to store user data permanently?

    Description

    There is a Persistence permission in browsers to flag data for being persisted permanently in the users' browser.

    In, e.g., Firefox https://developer.mozilla.org/en-US/docs/web/api/storagemanager#browser_compatibility, one can use the StorageManager to ask for that permission.

    From what I see, there is currently no specific test in Modernizr that can be queried to get info if this is available on the user's browser.

    From what I've read, it uses the StorageAPI and refers to a "box modes". This mode can either be "best-effort" or "persistent".

    "best-effort" means that the data could be removed if the user runs low on disk space. "persistent" won't wipe that data, even if disk space is low.

    All I found atm is

    • "quotamanagement", which is not sufficient enough to judge if data can be persisted
    • "indexeddb", which on its own can be both "best-effort" or "persistent"

    Problem

    • Firefox will ask the user for permission if he wants to store data permanently.
    • Brave will also ask, but in addition will ask for how long the data shall be stored.
    • Chrome, however is a little bit intransparent on this. It will determine if it's allowed based on the user activity. While it's not clear to me what this means in detail. But if e.g., the user has given an allowance for 'notification', Chrome will also allow persisting data.
    • For mobile browsers I haven't tested it with all browser/os combinations, but e.g. on Safari iOS it's not possible at all.

    References

    https://storage.spec.whatwg.org/#persistence

    https://caniuse.com/mdn-api_permissions_persistent-storage_permission

    https://web.dev/persistent-storage/

    opened by marcuspuchalla 0
Releases(v3.12.0)
High performance and SEO friendly lazy loader for images (responsive and normal), iframes and more, that detects any visibility changes triggered through user interaction, CSS or JavaScript without configuration.

lazysizes lazysizes is a fast (jank-free), SEO-friendly and self-initializing lazyloader for images (including responsive images picture/srcset), ifra

Alexander Farkas 16.6k Jan 1, 2023
Simple To-do list build using HTML5, CSS3, JavaScript and Webpack. You can add new tasks, remove and edit them.

Simple To-do list build using HTML5, CSS3, JavaScript and Webpack. You can add new tasks, remove and edit them.

Esteban Munoz 6 Mar 5, 2022
📷 Detects your face and adds filters from your webcam. You can capture and download images.

Snapchat Filters on WebCam ?? Detects your face and adds filters from your webcam. You can capture and download images. ?? Visit site ?? Screenshots ?

Orhan Emre Dikicigil 2 Apr 27, 2022
This Project is made with HTML5, CSS3, ReactJS, Axios, MetaMask, thirdweb, Rinkeby Test Network, Web 3.0 Technologies, and OpenSea API.

Abstract Collections This Project is made with HTML5, CSS3, ReactJS, Axios, MetaMask, thirdweb, Rinkeby Test Network, Web 3.0 Technologies, and OpenSe

Shobhit Gupta 34 Jan 4, 2023
A webpack based todo list with HTML5, CSS3, JS and linters

Project Name This is a project to track your daily tasks as a todo list. This project doesn't have a backend so data gets saved in you local storage.

Ritobroto Mukherjee 19 Aug 22, 2022
A planetary body simulator with a HTML5/CSS3/JS frontend and simulated using Rust WebAssembly.

Solar Sim ?? A planetary body simulator with a HTML5/CSS3/JS frontend and simulated using Rust WebAssembly. Try the latest version here! Built with ??

Ben Plate 3 Jun 15, 2022
Detects which package manager (bun, pnpm, yarn, npm) is used.

@skarab/detect-package-manager Detects which package manager (bun, pnpm, yarn, npm) is used based on the current working directory. Features Support p

null 5 Sep 3, 2022
AweSome Book App displays the book details entered by user and saves the information in Local storage. User can add and remove a book title/author to the library and from the library.

Awesome Book App with ES6 Used npm init -y command to create package.json file. Created the entry point for the JavaScript code called index.js Create

Krishna Prasad Acharya 8 Aug 15, 2022
A Minimalist to do list website where user can add, remove and edit multiple tasks and All the changes user makes in his to do list is saved in browser local storage so that it can be accessed later.

Testing for Add Remove function in To Do List App Jest framework is used for testing. Created (addremove.test.js) for a file containing the add item a

Krishna Prasad Acharya 8 Aug 15, 2022
1kb js library contains development debugging, error monitoring and reporting, user problem localization features

1kb js library contains development debugging, error monitoring and reporting, user problem localization features

腾讯 AlloyTeam 1.4k Dec 22, 2022
UAParser.js - Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment.

UAParser.js JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data with relatively small footprint (~17KB m

Faisal Salman 7.4k Jan 4, 2023
This plugin integrates by default with Twitter bootstrap using badges to display the maximum lenght of the field where the user is inserting text. Uses the HTML5 attribute "maxlength" to work.

Bootstrap MaxLength This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is

Maurizio 772 Dec 25, 2022
Satyam Sharma 3 Jul 8, 2022
This project is built with JavaScript, Webpack, HTML & CSS, Leaderboard api. When user clicks on Refresh button it hits the api and responds with the data, The user can also post data to the api

leaderboad Description the project. this project is about the leaderboad i did during Microverse to build a website for adding Data to the API and fet

Emmanuel Moombe 4 May 30, 2022
A collection of CSS3 powered hover effects to be applied to links, buttons, logos, SVG, featured images and so on

A collection of CSS3 powered hover effects to be applied to links, buttons, logos, SVG, featured images and so on. Easily apply to your own elements, modify or just use for inspiration. Available in CSS, Sass, and LESS.

Ian Lunn 27.9k Jan 4, 2023
The Easel Javascript library provides a full, hierarchical display list, a core interaction model, and helper classes to make working with the HTML5 Canvas element much easier.

EaselJS EaselJS is a library for building high-performance interactive 2D content in HTML5. It provides a feature-rich display list to allow you to ma

CreateJS 8k Dec 29, 2022
Cross-browser plugin to remove addictive features on YouTube like thumbnails, comments, previews and more...

ZenTube Installation Features Remove some (more) elements from Youtube to make it less addictive. Mix and match between the following options: Hide or

inversepolarity 57 Dec 17, 2022