本文へスキップ
  1. Web BENTO JS
  2. カテゴリ一覧
  3. 背景エフェクト
14 / BACKGROUND 12 パーツ

JS動く背景エフェクト 12選

コピペで動く背景エフェクト(動く背景)のサンプル集。プレビューは実際に動いています(マウス追従系はカーソルをのせて動かしてみてください)。HTML / CSS / JS タブでコードを確認し、全部コピーを押せば1回の貼り付けで完成。すべて依存ライブラリなしのバニラJSで、data-bnto-* 属性による自動初期化式です。画面外では自動停止するパフォーマンス配慮つきです。

該当するパーツが見つかりませんでした。

HERO SECTION浮遊パーティクル

浮遊パーティクル

<!-- 背景を敷きたい親(セクションやヒーロー)に position:relative を付けて、
     その先頭にこの1行を置く。上に載せる中身は position:relative; z-index:1 に -->
<div class="bnto-bgdots" data-bnto-bgdots data-count="40" aria-hidden="true"></div>
使い方のコツ

粒の数は data-count、色は --c1 で調整できます。モバイルでは30個前後に抑えるのがおすすめです。画面外に出ると IntersectionObserver が描画を自動停止するので、長いページに置いても無駄なCPU消費が発生しません。

SECTION BGネットワーク線

ネットワーク線

<!-- 親(section等)に position:relative を付けて先頭に置く。
     上に載せる中身は position:relative; z-index:1 に -->
<div class="bnto-bgnet" data-bnto-bgnet data-count="35" aria-hidden="true"></div>
使い方のコツ

粒子を増やすと線の判定は2乗のペースで増えます。広い画面でも data-count="50" 程度まで、スマホでは30以下が目安です。線がつながる距離はJS内の 90(px)を変更すると調整できます。IT・テック系サイトのヒーロー背景と好相性です。

MOVE CURSORマウス追従グラデーション

マウス追従グラデーション

<!-- 親(section等)に position:relative を付けて先頭に置く。
     マウス座標は親要素の上で拾うので、親自体は普通に操作できる -->
<div class="bnto-bgglow" data-bnto-bgglow aria-hidden="true"></div>
使い方のコツ

追従の柔らかさはJS内の 0.08(イージング係数)で調整します。小さくするほどゆったり遅れて付いてきます。カーソルのないタッチ端末では、CSSの初期値どおり中央に光が置かれた静かなグラデーションとして表示されるので破綻しません。

SECTION BGウェーブ

ウェーブ

<!-- 親(section等)に position:relative を付けて先頭に置く。
     data-count は重ねる波の本数 -->
<div class="bnto-bgwave" data-bnto-bgwave data-count="3" aria-hidden="true"></div>
使い方のコツ

波の本数は data-count で変えられますが、3〜4本あれば十分に豊かな重なりになります。水位はJS内の H * .58、ゆらぎの速さは t += .02 で調整してください。フッター直上の飾りやCTAセクションの背景にも向いています。

WINTER SALE降る雪

降る雪

<!-- 親(section等)に position:relative を付けて先頭に置く。
     data-count は画面内に舞う数の目安 -->
<div class="bnto-bgsnow" data-bnto-bgsnow data-count="30" aria-hidden="true"></div>
使い方のコツ

雪の量は data-count(画面内に舞う目安の数)で調整します。降り終えた粒は animationend で自動削除されるので、長時間表示してもDOMは増え続けません。冬季キャンペーンやクリスマスLPの期間限定演出にぴったりです。

AQUA SECTION上昇する泡

上昇する泡

<!-- 親(section等)に position:relative を付けて先頭に置く。
     data-count は画面内に浮かぶ数の目安 -->
<div class="bnto-bgbub" data-bnto-bgbub data-count="18" aria-hidden="true"></div>
使い方のコツ

横ゆれの幅はJS内の --sway の範囲(±26px)で調整します。上昇距離は親の高さから自動計算されるので、どんな高さのセクションに置いても画面外まできちんとのぼります。水・温泉・飲料など「清涼感」を出したいLPと好相性です。

NIGHT SKY星空またたき

星空またたき

<!-- 暗い背景色の親(section等)に position:relative を付けて先頭に置く。
     data-count は星の数 -->
<div class="bnto-bgstar" data-bnto-bgstar data-count="70" aria-hidden="true"></div>
使い方のコツ

星の数は data-count、流れ星の出現頻度はJS内の .004(1フレームあたりの確率)で調整できます。背景が暗いほどまたたきがきれいに見えるので、ネイビーや黒に近い親要素に敷いてください。ナイトツアーや天体系コンテンツに映えます。

MOVE CURSORスポットライトグリッド

スポットライトグリッド

<!-- 親(section等)に position:relative を付けて先頭に置く。
     マウス座標は親要素の上で拾う。data-size はマスの一辺(px) -->
<div class="bnto-bggrid" data-bnto-bggrid data-size="42" aria-hidden="true"></div>
使い方のコツ

マスの大きさは data-size、光が届く範囲はJS内の R(半径)で調整します。カーソルが追いつくとループが自動で止まる省エネ設計です。タッチ環境では静かなグリッドとして表示されるので、装飾としても破綻しません。

HERO TITLEオーロラ・ブロブ

オーロラ・ブロブ

<!-- 暗い背景色の親(section等)に position:relative を付けて先頭に置く。
     上に載せる見出しや本文は position:relative; z-index:1 に -->
<div class="bnto-bgaura" data-bnto-bgaura data-count="3" aria-hidden="true"></div>
使い方のコツ

色は --c1 / --c2、数は data-count、にじみ具合はCSSの blur(30px) で調整します(大きなヒーローでは50〜80pxがおすすめ)。CSSのkeyframesだけで作るブロブと違い、軌道をランダムなサイン波の合成で描くため、何秒眺めても同じ動きの繰り返しになりません。文字の可読性は ::after の暗めオーバーレイで確保しています(濃さは .38 を調整)。

DIGITALデジタルレイン

デジタルレイン

<!-- 暗い背景色の親(section等)に position:relative を付けて先頭に置く。
     上に載せる中身は position:relative; z-index:1 に -->
<div class="bnto-bgmatrix" data-bnto-bgmatrix aria-hidden="true"></div>
使い方のコツ

文字が上から降り続けるサイバーな演出です。文字の種類はJS内の GLYPHS、落ちる速さは drops[i] += .5 で調整できます。--c1 で色を変えられ、シャッフルにも対応します。ネイビーや黒に近い暗い親要素に敷くと、いちばん映えます。

CELEBRATION舞う紙吹雪

舞う紙吹雪

<!-- 親(section等)に position:relative を付けて先頭に置く。
     data-count は舞う紙片の枚数 -->
<div class="bnto-bgconfetti" data-bnto-bgconfetti data-count="60" aria-hidden="true"></div>
使い方のコツ

枚数は data-count で調整します。モバイルでは40枚前後に抑えるのがおすすめです。色は --c1 の色相を基調に、前後へ色相をずらしてカラフルに配色しています。紙片が画面下に落ちきると自動で上へ戻るので、常時背景として置き続けても枚数が増えません。お祝い・記念・キャンペーン達成の演出に向いています。

TIME OF DAY時間帯で変わる空

時間帯で変わる空

<!-- 親(section等)に position:relative を付けて先頭に置く。
     アクセス時刻に応じて data-time が付き、CSSで色が切り替わる -->
<div class="bnto-bgsky" data-bnto-bgsky aria-hidden="true"></div>
使い方のコツ

時間帯の境目はJS内の byHour の時刻(5・10・16・19時)で調整できます。各時間帯の色はCSSの data-time セレクタで自由に変えられます。デモでは切替ボタンを表示していますが、本番ではボタン生成部分を削除すれば、アクセス時刻に応じた空だけが表示されます。時報系サービスや、時間で表情を変えたいトップページに向いています。

JS動く背景エフェクトの基礎知識

動く背景エフェクトは、ヒーローやセクションの背後でゆっくり動き続ける装飾で、ページの第一印象と世界観づくりに大きく効きます。パーティクル・波・雪・星空といった定番演出は本来それなりのコード量が必要ですが、このページのサンプルはすべて依存ライブラリなしのバニラJavaScriptで、jQueryもフレームワークも不要です。

使い方は、HTML / CSS / JSの3タブをそれぞれ貼り付けるか、「全部コピー」ボタンでひとまとめになったコードを1回貼り付けるだけです。背景レイヤーは position: absolute で親いっぱいに広がる作りなので、敷きたいセクションに position: relative を付けて、その先頭に置いてください。初期化は data-bnto-* 属性の自動検出式なので、同じページに何個置いても、うっかりコードを2回貼っても壊れません。

canvasが背景演出に向く理由

数十個の粒子をDOM要素として個別に動かすと、要素数もスタイル計算もかさんでしまいます。canvas なら1枚の描画面に何十個の粒子でもまとめて描けるため、パーティクルやネットワーク線のような「粒がたくさん動く」演出と好相性です。このページのcanvas系パーツはすべて devicePixelRatio に対応しているのでRetina環境でもにじまず、ResizeObserverで親要素のサイズ変更にも自動で追従します。

パフォーマンスの注意点(粒子数・画面外停止・reduced-motion)

背景アニメーションは「動き続ける」性質上、実装しだいでCPUを消費し続けます。サンプルはすべて requestAnimationFrame で描画し、IntersectionObserverで画面外に出たあいだは完全に停止します。粒子の数は data-count 属性で調整できるので、モバイルでは少なめの値にするのがおすすめです。また、OSで「視差効果を減らす」を設定している閲覧者(prefers-reduced-motion)には、アニメーションを行わず初期配置の静止表示だけを行います。

文字の可読性を邪魔しない濃度

背景エフェクトはあくまで脇役です。粒子や波の不透明度を上げすぎると、上に載せた見出しや本文が読みにくくなってしまいます。サンプルはいずれも薄めの透明度を初期値にしていますが、実際のコンテンツを載せた状態で濃度(opacity やJS内のalpha値)を確認し、テキストとのコントラストが十分に保てる範囲で調整してください。文字の直下だけ半透明の帯を敷くのも有効です。

「全部コピー」と「分けて貼る」の使い分け

「全部コピー」を使うと、HTML・CSS・JavaScriptがひとつの自己完結ブロックとしてコピーされるので、1回の貼り付けだけですぐ動きを確認できます。動作のお試しや、1ページ完結のLPに組み込むときはこの方法が手軽です。

一方、本番サイトへ本格的に組み込む場合は、CSSはスタイルシート(.cssファイル)へ、JavaScriptは</body>直前や共通の.jsファイルへ、HTMLは使いたい場所へと分けて貼るのが一般的です。スタイルとスクリプトを1か所に集約できるため、複数ページ・複数パーツで使い回すときの管理がしやすく、ブラウザのキャッシュも効きやすくなります。なお、同じパーツをページ内で何度も使う場合でも、CSSとJSを貼るのは1回だけで大丈夫です(初期化スクリプトが該当要素すべてに自動で効きます)。

よくある質問

コピーした背景エフェクトはそのまま動きますか?
はい。「全部コピー」を押すとHTML・CSS・JSがひとつの自己完結ブロックになってコピーされます。position:relative を付けた親要素(セクションやヒーロー)の中に貼り付けるだけで動き、ライブラリの読み込みは一切不要です。
背景アニメーションはページを重くしませんか?
各パーツは requestAnimationFrame で描画し、IntersectionObserver によって画面外にあるあいだは自動で停止します。粒子の数も data-count 属性で減らせるので、負荷を抑えて使えます。
スマホやRetinaディスプレイでもきれいに表示されますか?
表示されます。canvas系のパーツは devicePixelRatio に対応しているため高解像度でもにじまず、親要素のサイズ変更にも自動で追従します。マウス追従系のパーツは、タッチ環境では初期状態の静かな表示のままになります。
動きが苦手な閲覧者への配慮はできますか?
できます。OSで「視差効果を減らす」を設定している閲覧者(prefers-reduced-motion)には、アニメーションを行わず初期配置の静止表示だけを行うように実装済みです。
このページのパーツはAIコーディングツールでも使えますか?
はい。Claude CodeやCursorのようにWebページを読めるAIには、このページのURLとパーツ名(例:「ネットワーク線」)を伝えるだけで実装を指示できます。AIがWebを読めない場合は、「全部コピー」で取得した自己完結ブロックをチャットに貼り付けて調整を頼むのが確実です。改変後のコードは、公開前に動作確認することをおすすめします。

関連カテゴリ

背景エフェクトと組み合わせて使いやすいパーツはこちらです。