npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

welderjs

v1.4.0

Published

Transition between CSS states, no matter how they are positioned

Downloads

8

Readme

WelderJS

Transition between CSS states, no matter how they are positioned!

No dependencies, only 1.3Kb when minified! Uses CSS animations.

Installation

npm

$ npm install welderjs

Bower

$ bower install welderjs

Example

// Include the library
<script src="js/welder.js" charset="utf-8"></script>

// Initialize the library with options
var globalOpts = {
  duration: 400
}
welder.init(globalOpts);

// Transition an element to a new state
var el = document.querySelector('#weldMe');
welder.transition(el, 'newState', options);

Basics

This library can transition elements between CSS states by simply switching a data attribute. By default, welder uses data-state, but this is configurable. After initializing the library, simply call weld.transition(...) and give it the string of the new state to transition to this state.

Configuration

Both upon initializing and requesting a transition, welder can be configured as follows. If an option is not given upon requesting a transition, either the default value or the value set upon initializing will be used.

var globalOpts = {
  delay: 50,                   // Delay in ms before transition occurs. Default (recommended): 50
  duration: 400,               // Duration of transition in ms. Default: 400
  easing: 'ease-out',          // CSS transition easing. Default: 'ease-out'
  dataAttribute: 'data-state'  // The attribute used to switch between states. Default: 'data-state'
}
welder.init(globalOpts);

/* ... */

var el = document.querySelector('#weldMe');

var opts = {
  delay: 50,                    // Delay in ms before transition occurs. Default (recommended): 50
  duration: 400,                // Duration of transition in ms. Default: 400
  easing: 'ease-out',           // CSS transition easing. Default: 'ease-out'
  dataAttribute: 'data-state',  // The attribute used to switch between states. Default: 'data-state'
  relativeTo: document.querySelector('...')   // The reference for the transition (see below). Default: null
}

welder.transition(el, 'newState', opts);

Using a reference

When you set the relativeTo option to anything other than an empty string (it's default value), welder will use the corresponding node instead of the viewport as the point of reference for the transition. This is particularly handy when scrolling might occur while the transition is playing.

The way it works is that the transition element will have absolute positioning instead of the default fixed positioning. Please keep in mind that for this to work, the reference (preferably the parent node) has relative, absolute or fixed positioning.

Contributing

Feeling inspired? Please contribute! Currently in need of demos and testing.

Roadmap

  • Testing
  • Ability to transition between states using classes

MIT License © Yarmo Mackenbach