エフェクトプラグイン
AK²Engine が提供するエフェクトプラグイン一覧。背景・カーソル・モーション・テキストの4グループに分類されます。
エフェクトの分類
AK²Engine のエフェクトプラグインは以下の4グループに分類されます。
| グループ | 概要 | 種類数 |
|---|---|---|
| 背景エフェクト | セクションに Canvas アニメーション背景を追加 | 27種 |
| カーソルエフェクト | マウスカーソルをカスタム表示 | 1種 |
| モーションエフェクト | スクロール連動のアニメーション | 2種 |
| テキストエフェクト | 文字アニメーション | 1種 |
背景エフェクト
背景エフェクトとは
背景エフェクトは、セクション(sections[] の各ブロック)に対して Canvas ベースのアニメーション背景を付与するプラグインです。
セクション外(ページ front-matter)に指定すればページ全体背景としても使用できます。ただし基本的な用途はセクション単位の使用を想定しています。
適用方法
effects: にクラス名を配列で指定します。セクション内でもページ front-matter でも、同じクラス名を使います。
セクションへの適用(推奨)
sections[].effects[] YAML 配列で指定します。
文字列記法(オプションなし)
sections:
- type: hero
title: "タイトル"
effects:
- SnowEffect
- FireflyEffect
オブジェクト記法(オプション指定あり)
sections:
- type: hero
title: "タイトル"
effects:
- name: SnowEffect
count: 20
alpha: 1.5
hue: 210
lightness: 70
- name: FireflyEffect
interactive: false
複数エフェクトを重ねる場合、mix-blend-mode: screen ですべてのエフェクトが合成表示されます。
ページ全体への適用
front-matter の effects: に指定します。base.njk が AK2.register(new SnowEffect()) を自動呼び出します。
---
layout: layouts/base.njk
title: My Page
effects:
- SnowEffect
- AuroraEffect
---
CSS カスタム変数によるパラメーター調整
各エフェクトは CSS カスタムプロパティで調整できます。変数名は --{エフェクト識別子}-{パラメーター名} が基本パターンです。
:root {
--snow-count: 200;
--snow-alpha: 0.9;
--aurora-alpha: 0.3;
--firefly-hue: 270;
}
背景エフェクト一覧
各エフェクト名をクリックすると詳細ページを確認できます。
| エフェクト名 | 説明 |
|---|---|
AuroraEffect |
青〜紫〜緑の光が揺らめくオーロラ。幻想的・神秘的な演出 |
CherryBlossomEffect |
ピンクの花びらが舞い落ちる。春・和風サイト |
CloudEffect |
白い雲が緩やかに流れる。空・清潔感・爽やかさ |
EmberEffect |
炎の火の粉が上方向に漂う。情熱・夏祭り |
FireflyEffect |
光の点(ホタル)が光跡を描く。夏・幻想的 |
GridConstruction |
ページ開幕時にグリッド線が展開するローディング演出★ |
LeafEffect |
緑の葉が揺れながら漂う。ナチュラル・エコ系 |
LeafFallEffect |
葉が落下する秋のシーン |
LightningEffect |
稲妻が走る。エネルギッシュ・テック・ロック系 |
GridEffect |
細い線が動くグリッドパターン。テクニカル・ミニマル |
MapleLeafEffect |
もみじの葉が舞う。紅葉・日本の秋 |
MomijiEffect |
もみじ(赤みが強いバリエーション) |
ParticleEffect |
Three.js による3Dパーティクル群(useThreeJS: true 必須) |
ProjectorFlickerEffect |
古い映写機のフリッカー。レトロ・アナログ感 |
RainEffect |
縦に落ちる雨のライン。梅雨・夜の雨 |
RippleEffect |
クリックで水面に波紋が広がる。水・清涼感 |
SakuraEffect |
桜の花びらが舞う(フルバリエーション)。春 |
ShimmerEffect |
キラキラした光の粒。高級感・ジュエリー |
SnowEffect |
白い雪がゆっくり降る。冬・クリスマス |
SparksEffect |
火花・スパークがはじける。工場・ものづくり |
StarFieldEffect |
星空。夜・宇宙・ロマンティック |
StarSpeedEffect |
星が高速で流れるワープ演出。SF・スピード感 |
StatusUpEffect |
ゲームのステータスアップ表示。ゲーミング・デジタル |
SteamEffect |
湯気が立ち上る。温泉・カフェ・温かみ |
VintageFilmEffect |
フィルムグレイン・スクラッチノイズ。レトロ・映画的 |
WaveRippleEffect |
ウェーブと波紋の水面表現。海・プール |
WaveEffect |
なめらかな波形。海・音楽・リズム感 |
★
GridConstructionは完了時にak2:grid-readyカスタムイベントを発行します。useLogoAnimation: trueはこのイベントをリッスンして SVG ストロークアニメーションを開始します。
カーソルエフェクト
cursorMagnetic
data-cursor-area 内でマウスカーソルをカスタム表示に切り替えます。data-magnetic を付与した要素はカーソルに吸い付くように動きます。
{% from "effect-cursor-magnetic/effect-cursor-magnetic.njk" import cursorMagnetic %}
{# body 直下に1回だけ配置 #}
{{ cursorMagnetic() }}
<section data-cursor-area>
<button data-magnetic type="button">Magnetic Button</button>
</section>
1ページあたり1回のみ呼び出してください。
モーションエフェクト
MagneticEffect(磁力エフェクト)
.btn-magnetic クラスを持つ要素をマウスカーソルに引き寄せます。
| パラメーター | デフォルト | 説明 |
|---|---|---|
strength |
0.3 |
引力の強さ(0〜1) |
new MagneticEffect() // デフォルト(strength: 0.3)
new MagneticEffect({ strength: 0.5 }) // 引力を強める
CounterAnimation(数値カウントアップ)
.counter-number クラスの要素がビューポートに入ると、数値が 0 から目標値までカウントアップします。
| HTML 属性 | デフォルト | 説明 |
|---|---|---|
data-target |
— | 目標値(必須) |
data-duration |
2000 |
アニメーション時間(ms) |
data-suffix |
'' |
数値の後ろに付加する文字列 |
<span class="counter-number" data-target="1000" data-duration="2000" data-suffix="+"></span>
effect-motion-fadein(フェードイン)
.fade-in-section クラスの要素がビューポートに入るとフェードインします。パラメーター設定は不要で、ページ読み込み時に自動起動します。
| HTML 属性 | デフォルト | 説明 |
|---|---|---|
data-delay |
0 |
遅延時間(ms) |
<div class="fade-in-section" data-delay="200">...</div>
テキストエフェクト
TypeWriter(タイピングアニメーション)
文字列を1文字ずつタイピング → 削除 → 繰り返しで表示するタイプライターエフェクトです。
| パラメーター | デフォルト | 説明 |
|---|---|---|
speed |
80 |
タイピング速度(ms/文字) |
deleteSpeed |
40 |
削除速度(ms/文字) |
waitTime |
2200 |
表示待機時間(ms) |
placeholder |
— | テキスト幅確保用の要素(任意) |
new TypeWriter({ speed: 60, deleteSpeed: 30, waitTime: 1800 })
カスタムエフェクトの作成
AK²Engine インターフェースを実装したクラスを作成し、window に登録することでカスタムエフェクトを追加できます。
class MyEffect {
constructor(options = {}) {
this.options = options; // YAMLオプションを受け取る
}
init(canvas, ctx) {
this.canvas = canvas;
this.ctx = ctx;
// CSS変数またはYAMLオプションから設定を読み取る
const style = getComputedStyle(document.documentElement);
this.count = this.options.count
?? parseInt(style.getPropertyValue('--my-count') || '100');
}
update(dt) { /* パーティクル更新(dt: 前フレームからの経過秒数) */ }
draw(ctx) { /* 描画処理 */ }
onResize(w, h) { /* キャンバスサイズ変更時の処理 */ }
}
window.MyEffect = MyEffect;
セクション個別エフェクトでYAMLパラメーターを受け取るには、constructor(options = {}) を実装してください。
前のページ: ← ボタンプラグイン | ↑ 目次 | 次のページ: Eleventy設定 →