0.2.0 • Published 7 months ago

tailwindcss-elastic-easings v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

tailwindcss-elastic-easings

A plugin for Tailwind CSS that provides elastic and bounce transition timing functions.

Elastic horizontal translate

!NOTE

Compatibility

Transition timing functions provided by this plugin currently don't work on Safari and Mobile. See #Compatibility for more details and fallback behavior/options.

Installation

Install the plugin from npm:

npm install tailwindcss-elastic-easings

Then add the plugin to your tailwind.config.js file:

// tailwind.config.js
module.exports = {
  theme: {
    // ...
  },
  plugins: [
    require("tailwindcss-elastic-easings"),
    // ...
  ],
};

Usage

Define a transition and set the desired transition-timing-function (here ease-elastic-out).

<div
  className="transition-transform duration-1000 ease-elastic-out hover:translate-x-8"
>
  Hover me
</div>

transition-timing-functions

  • ease-elastic-in
  • ease-elastic-out
  • ease-elastic-in-out
  • ease-bounce-in
  • ease-bounce-out
  • ease-bounce-in-out

Compatibility

tailwindcss-elastic-easings relies on linear easing functions (linear()). These are currently not supported by Safari, as well as most mobile browsers. When not supported it will fall back to the default tailwind easing.

Missing support can be detected with the no-elastic modifier.

<div
  className="transition-transform duration-1000 ease-elastic-out hover:translate-x-8 no-elastic:ease-in-out"
>
  Hover me
</div>

Configuration

This plugin can be configured by passing a configuration object to it.

  // ...
  plugins: [
    require("tailwindcss-elastic-easings")({
      resolution: 45,
      customEasings: {
        'rand': (x: number) => x + (Math.random() - 0.5) * (0.5 - Math.abs(x - 0.5)),
      }
    }),
    // ...
  ],
  // ...

Configuration options

OptionTypeDescriptionDefault
resolutionnumberNumber of points that are calculated for the easing curves30
customEasingsRecord<string, EasingFunction>Object to add or overwrite easing functions (see Custom easings){}

Custom easings

Custom easings can be used to implement all sorts of easing curves. The customEasings options takes an object where the keys are the names of the functions and the values a function with the signature (value: number) => number.

The name will transformed from camelCase to kebab-case and prepended with ease- to creat the tailwind utility class name. E.g. fancyCurve becomes ease-fancy-curve.

The function value can be any function that takes a number and returns a number. The easiest example would be (value: number) => value, which creates a linear easing function. The function will be called with values from 0 to 1 with steps of 1 / resolution to create the easing curve.

Acknowledgments

0.2.0

7 months ago

0.1.0

7 months ago