Skip to content

A micro-library for manipulating CSS class names, triggering change events using HTML data attributes, and creating declarative class-related event listeners

License

Notifications You must be signed in to change notification settings

jhildenbiddle/class-change

Repository files navigation

class-change.js

NPM GitHub Workflow Status (master) Codacy code quality Codacy branch coverage License: MIT Sponsor this project

A versatile Element.classList alternative for manipulating CSS class names, triggering class change events using HTML data attributes, and creating class-related event listeners using a simple, declarative API.

Why?

CSS class names change. A lot.

Native methods for manipulating CSS class names are rudimentary given how often we need them. Element.classList provides a basic API for working with classes, but changes can only be applied to a single element and separate event listeners must be created for each class change event. Legacy browsers also suffer from incomplete implementations or lack support entirely. The result is unnecessary code bloat and complexity from repeated loops and boilerplate code, polyfills for legacy browsers, and potential performance issues caused by a high volume of event listeners. This micro-library addresses these issues by reducing and simplifying the code required for handling CSS class changes for modern and legacy browsers.

Features

  • Apply class changes to Arrays, CSS Selectors, HTMLCollections, and NodeLists
  • Trigger class changes using HTML data attributes
  • Create class change event listeners using a simple, declarative API
  • Legacy browser support (IE9+)
  • ES and UMD modules available
  • Lightweight (1.6k min+gzip) and dependency-free

Usage & Options

See the documentation site for details.

Sponsorship

A sponsorship is more than just a way to show appreciation for the open-source authors and projects we rely on; it can be the spark that ignites the next big idea, the inspiration to create something new, and the motivation to share so that others may benefit.

If you benefit from this project, please consider lending your support and encouraging future efforts by becoming a sponsor.

Thank you! 🙏🏻

Contact & Support

  • Follow 👨🏻‍💻 @jhildenbiddle on Twitter and GitHub for announcements
  • Create a 💬 GitHub issue for bug reports, feature requests, or questions
  • Add a ⭐️ star on GitHub and 🐦 tweet to promote the project
  • Become a 💖 sponsor to support the project and future efforts

License

This project is licensed under the MIT License. See the LICENSE for details.

Copyright (c) John Hildenbiddle (@jhildenbiddle)

About

A micro-library for manipulating CSS class names, triggering change events using HTML data attributes, and creating declarative class-related event listeners

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published