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 🙏

© 2024 – Pkg Stats / Ryan Hefner

spritz.js

v2.3.0

Published

Modern and delightful sprites animation library for JavaScript!

Downloads

208

Readme

Spritz.js

📽Modern and delightful sprites animation library for JavaScript!

GitHub license GitHub release GitHub issues Travis CI

Can be used for interactive animations, 360 viewers, HTML5 games, and more...

Try the Demo samples.

Features

  • Lightweight - under 3.3KB minified and gzipped.
  • Responsive - syntax following the new HTML5 picture element.
  • Modern - written in ES6 JavaScript, no jQuery required.
  • Compatible - IE10+ support, mobile support.
  • Chainable API - play, pause, wait, and more...

Getting Started

  1. Installation
  2. Usage
  3. Options
  4. API / Methods
  5. Events
  6. Browser Support
  7. Contribute
  8. Projects using it!
  9. License

Installation

Using Yarn

yarn add spritz.js

Using NPM

npm i spritz.js --save

Unpkg CDN

<script src="https://unpkg.com/[email protected]/dist/spritz.js"></script>

Usage

The sprite will be generated inside the HTML element passed as first parameter. The canvas dimensions will depend on the width and the height of this element.

<div id="#selector"></div>
// import the library
import Spritz from 'spritz.js'

// instantiate with options
const sprite = Spritz('#selector', { /* options here */ })

// 🎉 ready to control your sprite!
sprite.play().wait(2000).pause()

Options

Settings overview list:

Spritz('#selector', {
	picture: [],
	steps: 1,
	rows: 1
})

Full option details are detailed below.

| Option | Type | Default | Description | | --- | --- | --- | --- | | picture | array | [] | Array of picture objects to be used as Sprite. The syntax is close to the new HTML5 picture element. More details below. | | steps | integer | 1 | Number of steps (or frames) composing the sprite. | | rows | integer | 1 | Number of rows (or lines) composing the sprite. | | init | integer | 1 | Initial sprite step. Set to false to disable the default auto‑init() feature. |

Sprite object will be displayed as per background-size .

Picture

The picture option syntax is close to the new HTML5 picture element. The library will choose the most suitable source according to the current layout of the page and the browser it will be displayed into. Sense of reading is following the array order (first to last element).

Parameters:

| Key | Type | Description | | --- | --- | --- | | srcset | required | Accepts a single image file path (e.g. srcset: 'kitten.png'). WebP format accepted for compatible browsers (built-in detection). | | media | optional | Accepts any valid media query that you would normally find in a CSS @media selector (e.g. media: '(max-width: 1200px)'). | | width | required | Specify the full width in pixels, of the sprite source image (e.g. width: 7800). | | height | required | Specify the full width in pixels, of the sprite source image (e.g. height: 2829). | | objectFit | optional | Specifies how the sprite should be fitted to the parent. Values: contain or cover. Default: contain. |

Example:

[
	{
		srcset: 'kitten-highres.png',
		media: '(min-width: 1200px)',
		objectFit: 'cover',
		width: 7800, height: 2829
	},
	{
		srcset: 'kitten.webp',
		width: 3900, height: 1415
	},
	{
		srcset: 'kitten.png',
		width: 3900, height: 1415
	}
]

API

Spritz exposes the following chainable API methods.

Basic methods

Advanced methods

.fps()

Change animation speed from its default value (15).

sprite.fps(10) // Change speed to 10fps

.play()

Play animation forward (using the current fps value). A backward option can be passed as parameter.

sprite.play()
sprite.play('backward') // Alternative way to play an animation backward

.playback()

Play animation backward (using the current fps value).

sprite.playback()

.pause()

Pause the current animation.

sprite.pause()

.stop()

Stop the current animation (pause and reset to the initial step).

sprite.stop()

.wait()

Chainable timeout that can be used to delay stuff. The delay value is to be passed as parameter, in milliseconds.

sprite.wait(1000) // Wait for 1 second

/* Usage example */
sprite
	.play() // Play animation
	.wait(2000) // Then wait for 2 second
	.stop() // Then stop animation

.step()

Change the current step (or frame) of the sprite. Target step to be passed as parameter.

sprite.step(5) // Change current step/frame to 5

.next()

Go to the next step (or frame).

sprite.next()

.prev()

Go to the previous step (or frame).

sprite.prev()

.init()

Build and load the sprite, within its selector. Initial step can be passed as parameter.

sprite.init() // Basic usage
sprite.init(2) // Initial step is 2 (default = 1)

.destroy()

Completely destroy the sprite element and behaviors. Restore the initial state.

sprite.destroy()

.until()

The next animation will automatically pause at the value specified. Two parameters can be used:

  • step (required): Step/frame at which the animation should stop.
  • loop (optional, default 1): Loop at which the animation should stop.
sprite.until(7) // Animation will automatically stop at step/frame 7
sprite.until(3, 2) // Animation will automatically stop at step/frame 3, on the second loop

/* Usage example */
sprite
	.until(7) // Stop following animation at step/frame 7
	.play() // Play animation (will automatically stop at step/frame 7)

.flip()

Flip the sprite horizontally.

sprite.flip()

.get()

Return data, then call the callback function with result. Two parameters can be used:

  • data (required): Data to return. Possible values: step| picture.
  • callback (optional): Callback function to be called with result as first parameter.
// console log the current step/frame
sprite.get('step', (currentStep) => {
	console.log(currentStep)
})

// console log the current picture in use
sprite.get('picture', (pic) => {
	console.log(pic)
})

Note that this method, like the others, is chainable.

Events

The following events can be used to write custom callbacks functions.

// Sprite is ready for use (after init)
sprite.on('ready', () => { /* Your code here */ })

// Sprite image has been loaded (current 'picture' loaded passed as parameter)
sprite.on('load', (picture) => { /* Your code here */ })

// Sprite has been destroyed
sprite.on('destroy', () => { /* Your code here */ })

// Sprite animation start ('forward' or 'backward' passed as first parameter)
sprite.on('play', (direction) => { /* Your code here */ })

// Sprite animation pause
sprite.on('pause', () => { /* Your code here */ })

// Sprite animation stop
sprite.on('stop', () => { /* Your code here */ })

// Animation timeout delay in  progress ('delay' value passed as parameter)
sprite.on('wait', (delay) => { /* Your code here */ })

// Step changed manually ('from' and 'to' passed as parameters)
sprite.on('change', (from, to) => { /* Your code here */ })

// Viewport has been resized (new current 'picture' passed as parameter)
sprite.on('resize', (picture) => { /* Your code here */ })

Browser Support

Fully supported by Evergreen Browsers (Edge, Opera, Safari, Firefox & Chrome) and IE 10+ browsers.

For older browsers support like IE8 or IE9, you'll need to manually include the following Polyfill library on your website:

<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>

Contribute

yarn run watch
yarn run test

License

MIT © 2017-2019 Sylvain Simao

forthebadge