Cntlog

【jQuery不要】スクロールで画面内・外の要素を制御するJSライブラリ in-view.js

フロントエンド

投稿日

ページスクロールをして、特定の要素がウインドウ内で表示されたタイミングを検知してアニメーションをさせたり、classをつけるといった要望はよくありますね。

以前はjquery.inviewを使っていたのですが、jQueryに依存(1系に)してることもあって、使えるシーンがすくなっていました。

そこで、jQueryに依存しないライブラリで、画面内の要素検知ができるものがあったので紹介します。

in-view

in-view.jsはすべてのモダンブラウザとIE9+をサポートしており、現環境ほとんどで利用できます。

in-viewのinstall

npmでinstallする方法とダウンロードしたものを読み込む2パターンがあります。

npm install --save in-view

公式サイトには書いてなかったのですが、CDN版もありました。

<script src="https://cdn.jsdelivr.net/npm/in-view@0.6.1/dist/in-view.min.js"></script>

使い方

使い方はシンプルで対象となる要素を指定し、ビューポートに入った時(enter)と出る時(exit)にエフェクトを記述します。

inView('.someSelector')
    .on('enter', doSomething)
    .on('exit', el => {
        el.style.opacity = 0.5;
    });

一度しか適応したくない場合は.onではなく.onceを使います。

inView('.someSelector').once('enter', doSomething);

画面内にいるかどうかの判定もできますのでif文でなにかするとかも可能です。

inView.is(document.querySelector('.someSelector'));// => true

どのくらい入り込んでると、画面内に入ったかをチェックもできます。

inView.offset(100);
inView.offset(-50);

デモ