1.0.8 • Published 12 days ago

alpinejs-intersect-class v1.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
12 days ago

Alpine.js Intersect-Class Plugin

An Alpine.js plugin to easily set CSS classes to an element when it enters the viewport. Especially useful for animating elements when scrolling.

<!-- A little something like this.. -->
<div x-data x-intersect-class="is-visible"></div>

Demo

Click here to take a look at the examples (View Source)


Installation

You can use this plugin by either including it from a <script> tag or installing it via NPM:

Via CDN

You can include the CDN build of this plugin as a <script> tag, just make sure to include it BEFORE Alpine's core JS file.

<!-- This Plugin -->
<script defer src="https://unpkg.com/alpinejs-intersect-class@1.x.x/dist/cdn.min.js"></script>

<!-- Alpine Core -->
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>

Via NPM

You can install Intersect from NPM for use inside your bundle like so:

npm install alpinejs-intersect-class

Then initialize it from your bundle:

import Alpine from 'alpinejs'
import intersectClass from 'alpinejs-intersect-class'

Alpine.plugin(intersectClass)

...

Usage

Use the x-intersect-class Attribute to set the CSS class that should be added to the element once it comes to the browsers viewport.

<div x-data x-intersect-class="fade-in"></div>

Make sure that you have defined that class in your CSS files, like fade-in in this example.

The .once Modifier

You can use the .once modifier if you want to trigger the CSS class only on the first appearance of an element.

<div x-data x-intersect-class.once="fade-in"></div>

.threshold, .half and .full Modifier

Control the threshold property of the IntersectionObserver. This works the same way like it does with Alpines Intersect Plugin.

<div x-data x-intersect-class.threshold.75="fade-in"></div>

FAQ

Couldn't I just use Alpines Intersect Plugin to do something like this?

<div x-data="{ shown: false }" x-intersect="shown = true" :class="{ 'is-visible': shown }">

You definitely could. And if you are using the Intersect plugin already, then you probably should! The point of the Intersect-Class plugin is to provide this functionality with as few attributes as possible so that frontend developers will actually use it.

Do I need the x-data attribute?

Yes, you do. With x-data you define a Alpine.js Component. Click here to read more about x-data in the Alpine.js documentation.

My elements are flashing when the page is loading

This is a known problem with JavaScript animations. It's because the JS takes a moment to initialize. The solution can be different depending on what kind of animation you want to run.

A good starting point could be the use of x-cloak. Initial use of the CSS class can also be helpful, like I did for the CSS animations demo.


1.0.8

12 days ago

1.0.7

26 days ago

1.0.6

12 months ago

1.0.5

12 months ago

1.0.4

1 year ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago