どんどん簡単になっていく!最近見かけるアニメーションを伴ったさまざまなUIが実装できるスクリプト -LayerJS
Post on:2018年5月18日
アイコンをクリック・タップすると横からスライドして表示されるナビゲーション、サムネイルをタップするとズームして次のコンテンツを表示、今までとは異なるうるさくないパララックスエフェクト、ほかにもスライダーやアコーディオンやモーダルなど。
最近のWebページやスマホアプリでよく見かけるアニメーションを伴ったさまざまなUIが簡単に実装できる超軽量スクリプトを紹介します。
他のスクリプトやスタイルシートに依存はなく、React、VueJS、Angular、jQueryなどと一緒に利用することもできます。

LayerJSの特徴
LayerJSは外部ファイルを加え、あとはHTMLにdata属性を与えるだけの簡単実装で、さまざまなUIパターンを簡単に実装できます。

- ユニバーサル
- スライダー、ポップアップ、アコーディオン、メニュー、パララックス、ジャスチャーなど、さまざまなUIパターンを簡単に実装できます。
- ピュアHTML
- HTMLのdata属性を使用して、インターフェイスをレイアウトし、インタラクションを定義します。
- 互換性
- React、VueJS、Angular、jQueryに対応しています。
- デザイン
- デザインを自由に適用できます、LayerJSはエフェクトを提供するだけです。
- 超軽量
- 30kbの超軽量スクリプトで、依存はありません。
- レスポンシブに完全対応
- スマホ・タブレット・デスクトップ、さまざまなデバイス・さまざまなスクリーンサイズに対応。
LayerJSのデモ
LayerJSのデモでは、Webページやスマホアプリでよく見かけるさまざまなレイアウトやエフェクトの最小構成を楽しむことができます。もちろん、これらは組み合わせて利用することができます。
LayerJSの基本的な仕組みは、最初にステージ(親要素・ラッパー)を定義し、その上にコンテンツを配置したレイヤーを載せます。レイヤーはフレームで管理でき、簡単にアニメーションを適用できます。

デモページ: スライダー
スライダーは、親要素にステージを用意し、子要素に各スライドを配置するだけです。コントローラーは通常のリンクとして配置します。
HTMLは、下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
<div lj-type="stage"> <div lj-type="layer" lj-default-frame="frame1"> <div lj-type="frame" lj-name="frame1"> ... content of frame 1 ... </div> <div lj-type="frame" lj-name="frame2"> ... content of frame 2 ... </div> </div> </div> <a href="#slider.!prev">previous</a> <a href="#slider.!next">next</a> |

デモページ: ズームUI
スマホアプリでよく見かけるズーズUIも簡単に実装できます。ステージ上にキャンバスを用意し、拡大縮小・回転・移動・変形させることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div lj-type="stage"> <div lj-type="layer" lj-layout="canvas"> <div lj-type="frame" lj-name="zoomout"> ... Headline and intro ... </div> <div lj-type="frame" lj-name="zoomin"> <div lj-type="stage"> <div lj-type="layer" lj-layout="canvas"> <div lj-type="frame" lj-name="frame1"> ... content frame 1 ... </div> <div lj-type="frame" lj-name="frame2"> ... content frame 2 ... </div> ... </div> </div> </div> </div> </div><div lj-typ |

デモページ: パララックス
パララックスは、ステージ上に2つレイヤーを重ねて実装します。上層と下層に異なる動きを与えることで、簡単に実現できます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<div lj-type="stage"> <div lj-type="layer"> <div lj-type="frame" lj-fit-to="cover"> <img src="img/background.png"> </div> </div> <div lj-type="layer"> <div lj-type="frame"> ... content ... </div> </div> </div> |

デモページ: サイドメニュー
サイドから重なるように表示されるメニューも簡単に実装できます。閉じた状態と開いた状態のフレームを用意し、切り替えるだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<div lj-type="stage"> <div lj-type="layer" lj-default-frame="frame1"> <div lj-type="frame" lj-name="frame1"> ... page content ... </div> </div> <div lj-type="layer" lj-name="menulayer"> <div lj-type="frame" lj-name="menu-closed"> <a href="#menu-open">Menu</a> </div> <div lj-type="frame" lj-name="menu-open"> <a href="#menu-closed">close</a> <ul class="nav-list"> ... menu items ... </ul> </div> </div> </div> |

デモページ: ライトボックス・モーダル
ライトボックス・モーダルのようなポップアップコンテンツも簡単です。表示しない状態と表示した状態のフレームを作成し、そのレイヤーを切り替えるだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div lj-type="stage"> <div lj-type="layer" lj-default-frame="frame1"> <div lj-type="frame" lj-name="frame1"> ... page content ... <a href="#box-layer.box1>click here ...</a> </div> </div> <div lj-type="layer" lj-default-frame="!none" lj-name="box-layer"> <div lj-type="frame" lj-name="box1"> ... modal content ... </div> </div> </div> |
LayerJSの使い方
Step 1: 外部ファイル
head内に当スクリプト・スタイルシートを外部ファイルとして記述します。
1 2 3 4 5 |
<head> ... <script src="http://cdn.layerjs.org/libs/layerjs/layerjs-0.5.2.min.js"></script> <link href="http://cdn.layerjs.org/libs/layerjs/layerjs-0.5.2.css" type="text/css" rel="stylesheet" /> </head> |
Step 2: HTML
div要素にdata属性を加え、ステージやフレームを定義するだけです。
1 2 3 4 5 6 7 |
<div data-lj-type="stage"> <div data-lj-type="layer" data-lj-default-frame="main" > <div data-lj-type="frame" > … your HTML code … </div> </div> </div> |
さまざまなdata属性が用意されています。
sponsors