波紋アニメーション付きボタンを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

ボタン
無料ツール
ボタンを自由に作成

文字・サイズ・色・角丸・グラデーション・アイコン・ホバー・立体表現などを設定して、HTML・CSSを自動生成できます。

ボタン作成ツールを使う
新しいタブで開きます

波紋アニメーション付きボタンを作る方法

ボタンをクリックすると、クリックした位置から円形の波紋が広がるボタンを作る方法を紹介します。このサンプルでは、ボタンの内側だけで波紋を表示するのではなく、クリックした位置を中心に波紋がボタンの外側まで大きく広がるデザインにしています。HTML・CSS・JavaScriptを使って実装します。

クリックした瞬間に波紋を表示することで、ボタンが操作されたことを視覚的に分かりやすく伝えられます。波紋は徐々に大きくなりながら透明になり、アニメーションが終了すると自動的に削除されます。申し込みや送信などの操作ボタンをはじめ、クリックしたことを印象的に見せたい場面で利用できます。

JavaScriptではクリックされた位置を取得し、その位置へ波紋用の要素を追加します。CSSでは円形の波紋をtransformで拡大し、opacityを変化させながら消えるアニメーションを設定しています。波紋の大きさや色、透明度、アニメーション時間を変更することで、広がり方を好みに合わせて調整できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

波紋アニメーション付きボタン

ボタンをクリックすると、クリックした位置から波紋が広がります。

ボタン

ボタンをクリックして、波紋が広がるアニメーションを確認できます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>波紋アニメーション付きボタン</title>

  <!-- CSSファイル -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- 波紋アニメーション付きボタン -->
  <a
    class="ripple-outside-button_link"
    href="#">
    ボタン
  </a>

  <!-- JavaScriptファイル -->
  <script src="script.js"></script>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではリンクとして利用できるボタンを配置し、CSSではボタンのデザインと波紋が広がるアニメーションを設定します。JavaScriptではクリックされた位置を取得して波紋用の要素を追加し、アニメーション終了後に自動的に削除します。

sample/
    ├── index.html
    ├── style.css
    └── script.js

各ファイルの役割
index.htmlは波紋アニメーション付きボタンを配置するファイルです。a要素のhref="#"を変更すると、ボタンのリンク先を指定できます。

style.cssはボタンと波紋のデザインを設定するファイルです。ボタンの大きさ、角丸、背景色、文字色のほか、波紋の初期サイズ、色、透明度、広がる大きさ、アニメーション時間を変更できます。overflow:visible;を指定しているため、波紋はボタンの外側まで表示されます。

script.jsはボタンがクリックされた位置を取得し、その位置へ波紋用のspan要素を追加するファイルです。前回の波紋が残っている場合は削除し、波紋のアニメーションが終了したあとにも追加した要素を自動的に削除します。

設置方法・使い方
sampleフォルダへindex.html・style.css・script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。ボタンをクリックすると、クリックした位置を中心に円形の波紋が発生し、ボタンの外側まで広がりながら透明になります。現在のscript.jsではevent.preventDefault();によってリンク先への移動を停止しています。実際にリンクとして使用する場合は、index.htmlのhref="#"を移動先のURLへ変更し、script.jsのevent.preventDefault();を削除してください。

カスタマイズできる内容
index.htmlではボタンに表示する「ボタン」の文字と、hrefに指定するリンク先を変更できます。

style.cssではボタンの背景色、文字色、角丸、文字サイズ、内側余白を変更できます。波紋はbackground:rgba(37,99,235,.28);で色と透明度を変更でき、アニメーション時間や最終的な拡大率を調整することで、波紋の広がり方も変更できます。

数値調整
style.css
padding:80px 20px;
ページ全体の上下・左右の余白です。上下の80pxを大きくすると、ボタンの外側へ波紋が広がるための空間が広くなります。左右の20pxを大きくすると画面端との間隔が広がります。

padding:14px 32px;
ボタンの内側余白です。上下の14pxを大きくするとボタンが高くなり、左右の32pxを大きくすると横に広がります。

border-radius:10px;
ボタンの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:16px;
ボタンの文字サイズです。値を大きくすると文字が大きくなり、小さくすると文字が小さくなります。

width:20px;・height:20px;
波紋が発生したときの初期サイズです。値を大きくすると最初の円が大きくなり、小さくすると小さな円から広がります。

background:rgba(37,99,235,.28);
波紋の色と透明度です。最後の.28を大きくすると波紋が濃くなり、小さくすると薄くなります。

animation:ripple-outside-button_animation .7s ease-out forwards;
波紋が広がるアニメーション時間です。0.7秒で変化します。.7sを大きくするとゆっくり広がり、小さくすると速く広がります。

transform:translate(-50%,-50%) scale(12);
アニメーション終了時の波紋の拡大率です。12を大きくすると波紋がより広い範囲まで広がり、小さくすると広がる範囲が狭くなります。

レスポンシブ対応
このサンプルはボタンをinline-blockで表示し、内容に合わせた横幅になるようにしています。また、style.cssのbodyへ左右20pxの余白を設定しているため、画面幅が狭い場合でもボタンと画面端の間隔を確保できます。スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント