Skip to content

Tailwind CSS with Intersection Observer variants

License

Notifications You must be signed in to change notification settings

heidkaemper/tailwindcss-intersect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tailwind CSS Intersection Plugin

Imagine you could write an Intersection Observer like a Tailwind CSS variant:

<div class="opacity-0 intersect:opacity-100 transition-opacity"></div>

Demo

Click here to see it in action (View Source)


Installation

This package has two parts. A Tailwind CSS plugin and a tiny JavaScript snippet.
Download and install it via npm:

npm install tailwindcss-intersect

Import

Import it just like Tailwind CSS in your CSS file:

/* tailwind css v4.x */
@import "tailwindcss";
@import "tailwindcss-intersect";

If you are using Tailwind CSS v3 or a JavaScript configuration file, import it like this:

// tailwind.config.js
module.exports = {
  // ...
  plugins: [
    require('tailwindcss-intersect')
  ],
}

Add the necessary JavaScript snippet

Via CDN

You can include the CDN build of this plugin as a <script> tag to your site:

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

Via NPM

Alternatively, you can add the plugin to your JavaScript bundle:

import { Observer } from 'tailwindcss-intersect';

Observer.start();

Usage

Use the intersect: variant in your classes like you would with every other Tailwind CSS Variant:

<div class="bg-cyan-500 intersect:bg-indigo-600 transition-colors"></div>

Modifiers

intersect-once

You can use intersect-once if you want to trigger the event only on the first appearance of an element.

<div class="intersect:animate-spin intersect-once"></div>

intersect-half

Use the intersect-half utility to trigger the event when at least half of the element is visible. (threshold is set to 0.5)

<div class="intersect:animate-spin intersect-half"></div>

intersect-full

Use the intersect-full utility to trigger the event when when the element is fully visible. (threshold is set to 0.99)

<div class="intersect:animate-spin intersect-full"></div>

Custom classes

If you want to define the intersection behavior in a custom class (e.g. with the @apply directive), add a intersect class to your HTML element.

<div class="intersect custom-class"></div>