Giter VIP home page Giter VIP logo

m-class-list's Introduction

mClassList

npm GitHub issues dependencies license

The super simple shim for classList of HTML and SVG, that transparently intercepts difference between modern browsers and semi-modern browsers.

There are many shims and polyfills for classList, and also, almost modern browsers already support classList.
Why is a new shim needed now?

  • Some browsers don't support yet classList of SVG element even if those support that of HTML element.
  • Some browsers don't support multiple arguments for methods of DOMTokenList (i.e. classList).
  • Since modern browsers support many other APIs, a heavy library that supports legacy browsers perfectly is unneeded.
  • That is, only a little bit of intercepting is needed, more simple and small shim is needed.

So, features of mClassList are:

  • Provide classList if specified element does not have it.
  • Support SVG element also.
  • Support and respect the standard API specification that contains supporting multiple arguments for methods.
  • Simpler and smaller by using other APIs that are supported by modern browsers.
  • Don't change any prototype. (Polyfills and the evolution of the Web)
  • Additionally support, "Method chaining".

Usage

Load mClassList into your web page.

<script src="m-class-list.min.js"></script>

Replace element.classList with mClassList(element).
The element can be a HTML element or SVG element.

For example, replace this code:

if (element.classList.contains('foo')) {
  element.classList.add('bar', 'baz');
}

with:

if (mClassList(element).contains('foo')) {
  mClassList(element).add('bar', 'baz');
}

Supported APIs

Following methods and properties are supported. For details of each one, see HTML5 document such as MDN.

length

number = mClassList(element).length

item

token = mClassList(element).item(index)

add

classList = mClassList(element).add(token1[, token2, token3...])

(See mClassList.methodChain for the return value.)

remove

classList = mClassList(element).remove(token1[, token2, token3...])

(See mClassList.methodChain for the return value.)

contains

boolean = mClassList(element).contains(token)

toggle

boolean = mClassList(element).toggle(token[, force])

replace

classList = mClassList(element).replace(token, newToken)

(See mClassList.methodChain for the return value.)

mClassList.ignoreNative

By default, mClassList(element) returns a native classList if element has it.
You can set mClassList.ignoreNative = true to use shim always. For example, this is used for browsers that don't support multiple arguments for methods even though the element has classList.

mClassList.methodChain

By default, following methods return the classList instance itself.

Therefore you can use "Method chaining".
For example:

mClassList(element)
  .add('foo', 'bar')
  .remove('baz');

Note that this behavior differs from the standard API specification.
If you want the standard behavior, set mClassList.methodChain = false to make the methods return a void.

m-class-list's People

Contributors

anseki avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

sterbur

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.