Imagine you could write an Intersection Observer like a Tailwind CSS variant:
<divclass="opacity-0 intersect:opacity-100 transition-opacity"></div>Click here to see it in action (View Source)
This package has two parts. A Tailwind CSS plugin and a tiny JavaScript snippet.
Download and install it via npm:
npm install tailwindcss-intersectImport 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.jsmodule.exports={// ...plugins: [require('tailwindcss-intersect')],}You can include the CDN build of this plugin as a <script> tag to your site:
<scriptdefersrc="https://unpkg.com/tailwindcss-intersect@2.x.x/dist/observer.min.js"></script>Alternatively, you can add the plugin to your JavaScript bundle:
import{Observer}from'tailwindcss-intersect';Observer.start();Hot Tip: When building a SPA, it may be necessary to restart the Observer on route changes. You can call Observer.restart() to do so.
Use the intersect: variant in your classes like you would with every other Tailwind CSS Variant:
<divclass="bg-cyan-500 intersect:bg-indigo-600 transition-colors"></div>You can use intersect-once if you want to trigger the event only on the first appearance of an element.
<divclass="intersect:animate-spin intersect-once"></div>Use the intersect-half utility to trigger the event when at least half of the element is visible. (threshold is set to 0.5)
<divclass="intersect:animate-spin intersect-half"></div>Use the intersect-full utility to trigger the event when when the element is fully visible. (threshold is set to 0.99)
<divclass="intersect:animate-spin intersect-full"></div>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.
<divclass="intersect custom-class"></div>