今回はFont Awesomeという超便利なサービスの使い方をまとめます。後半ではアイコンにさまざまなアニメーション効果をつける方法も解説します。

1. Font Awesomeとは?

Font Awesome5のトップページ
公開当時のFont Awesome 5のトップ画面

ざっくりというとウェブサイトやブログでWebアイコンフォントを表示できるようにしてくれるサービスです。

Font Awesome公式ページです。アイコン一覧などもこちらから確認できます。

上の画像は公開当時のFont Awesome 5の画面です。この記事のコードと見本は、Font Awesome Free 7.3.1のWeb Fonts + CSSに統一しています。

Webアイコンフォントとは?

ウェブページ上で文字と同じように表示できるアイコンのことです。画像でアイコンを貼るのと違い、拡大してもぼやけませんし、色もサイズも簡単に変えることができます。

使用例



たとえばこれらのアイコンはFontAwesomeを使って表示しています。このように色もサイズも自由に変えることができます。

無料版と有料版の違い

Font Awesomeには無料のFree版と有料のPro・Pro+があります。Free版では、ClassicのSolidとRegularの一部、それにBrandsのアイコンを使えます。このページの見本はすべてFree版に含まれるアイコンです。

2. 使用準備

Font Awesomeを使う前に、CSSとフォントを読み込む準備が必要です。この記事ではFree 7.3.1のファイルを自分のサイトに置く方法で進めます。公式のKitを利用する方法もあります。

手順1. Free 7.3.1のファイルを用意する

cdnを使う

上の図は外部サーバーからファイルを読むCDNの仕組みを表しています。自前配信では、同じ版のCSSとWebフォントを自分のサーバーに配置します。公式ダウンロードでFree版のWeb用ファイルを取得するか、npmを使える環境では次のコマンドで7.3.1を取得してください。

npm install --save-exact @fortawesome/fontawesome-free@7.3.1

手順2. CSSとWebフォントを配置する

取得したパッケージのcssからfontawesome.min.css・solid.min.css・regular.min.css・brands.min.cssを、webfontsからfa-solid-900.woff2・fa-regular-400.woff2・fa-brands-400.woff2をコピーします。例では/assets/font-awesome/7.3.1/css/と/assets/font-awesome/7.3.1/webfonts/へ置きます。CSSとwebfontsを隣り合わせのフォルダーにして、CSS内の相対URLを保ってください。詳しくは公式の自前配信手順を参照してください。

<link href="/assets/font-awesome/7.3.1/css/fontawesome.min.css" rel="stylesheet">
<link href="/assets/font-awesome/7.3.1/css/solid.min.css" rel="stylesheet">
<link href="/assets/font-awesome/7.3.1/css/regular.min.css" rel="stylesheet">
<link href="/assets/font-awesome/7.3.1/css/brands.min.css" rel="stylesheet">

手順3. headタグ内でCSSを読み込む

上の4行をHTMLの<head>〜</head>内に貼り付けます。URLは実際に配置した場所に合わせてください。fontawesome.min.cssが基本の指定、残りがSolid・Regular・Brandsの指定です。使わないスタイルのCSSとフォントは省けます。

別の方法:公式Kitを使う

自分でファイルを配置できない環境では、公式Kitの手順を確認してください。Kitはアカウントで作成し、選んだ方式に合うコードをサイトへ追加します。以下の見本と同じ方法を使うときはWeb Fonts + CSSを選びます。

参考Font Awesome公式:自前配信の手順CSSとWebフォントの配置・読み込みを確認できます。

3. Font Awesomeの使い方

準備さえ済ましてしまえば、アイコンフォントを表示させるのはとても簡単です。

手順1:使いたいアイコンフォントを探す

公開当時の操作画面(Font Awesome 5)
アイコン一覧

アイコン一覧から使いたいアイコンを選びます。このページは何度も使うことになるかと思うのでブックマークしておくと良いでしょう。

この記事では7.3.1に含まれるアイコンを使います。公式一覧のバージョン・Freeの条件を確認し、別の版や有料のアイコンを混ぜないようにしましょう。

公開当時の操作画面(Font Awesome 5)
使いたいアイコンをクリック

使いたいアイコンを選び、詳細ページのFree・Proなどの表示を確認します。画像は公開当時の画面なので、現在の無料・有料の判定を画像の色だけで行わないでください。

手順2:アイコンフォントのコードをコピー

公開当時の操作画面(Font Awesome 5)
使いたいアイコンのコードをコピー

アイコンの詳細ページで、使うスタイルのHTMLコードをコピーします。この記事では<i class="fa-solid fa-bomb"></i>などの長いクラス名を使います。画像のfabは旧表記で、ここではfa-brandsに揃えています。

手順3:アイコンを表示させたい位置に貼付け

コピーしたコードをHTML内のアイコンを表示させたい位置に貼り付けます。これだけで以下のようにアイコンフォントを使うことができます。

HTMLコード
<p><i class="fa-brands fa-twitter" aria-hidden="true"></i>ここにアイコンを表示</p>
ブラウザ表示

ここにアイコンを表示

アイコンの大きさを変える

<i class="fa-solid fa-list-check fa-lg" aria-hidden="true"></i>

FontAwesomeでは、アイコンの大きさを簡単に変えることができます。以下のコードをi class="〜"内に書くことでサイズを大きくすることができます。

  • fa-lg (1.25倍)
  • fa-2x (2倍)
  • fa-3x (3倍)
  • fa-4x (4倍)
  • fa-5x (5倍)

実際にコードを書いてみます。

HTMLコード
<p><i class="fa-solid fa-bomb fa-lg" aria-hidden="true"></i></p>
<p><i class="fa-solid fa-bomb fa-2x" aria-hidden="true"></i></p>
<p><i class="fa-solid fa-bomb fa-3x" aria-hidden="true"></i></p>
<p><i class="fa-solid fa-bomb fa-4x" aria-hidden="true"></i></p>
<p><i class="fa-solid fa-bomb fa-5x" aria-hidden="true"></i></p>
ブラウザ表示

その他のサイズにしたいときは

上の5つのサイズ以外にしたい場合は自分の好きな名前のclassを追加して、そのclassに対してCSSでサイズ指定しましょう。

HTMLコード
<p><i class="fa-solid fa-bomb my-small" aria-hidden="true"></i></p>
<p><i class="fa-solid fa-bomb my-big" aria-hidden="true"></i></p>
CSSコード
.my-small {
  font-size: 0.8em; /* 0.8倍の大きさ */
}
.my-big {
  font-size: 6em; /* 6倍の大きさ */
}
ブラウザ表示

アイコンの色を変える

<i class="fa-solid fa-list-check my-example" aria-hidden="true"></i>

.my-example {
  color: skyblue;
}

アイコンの色を変えるときには、iタグに好きな名前のclassを追加し、それに対してCSSで色を指定します。たとえば以下のように書きます。

HTMLコード
<i class="fa-solid fa-tag my-gray" aria-hidden="true"></i>
<i class="fa-solid fa-tag my-skyblue" aria-hidden="true"></i>
<i class="fa-solid fa-tag my-orange" aria-hidden="true"></i>
CSSコード
.my-gray {
  color: gray;
}
.my-skyblue {
  color: skyblue;
}
.my-orange {
  color: #fecb81;
}
ブラウザ表示

アイコンと文字の間にスペースを作る

アイコンと文字の間にスペース

文字のすぐ横にコードを貼ると少し窮屈に感じるかもしれません。

半角スペースで対応

アイコンと文字の間に隙間を作るには半角スペースを入力するのが簡単だったりします。

fa-width-fixedで幅を指定

<i class="fa-solid fa-list-check fa-width-fixed" aria-hidden="true"></i>

Font Awesome 7のアイコンは標準でも幅が揃います。現行のfa-width-fixedを明示すると、幅を1.25emに固定します。文字との隙間が目的なら、半角スペースやCSSのmarginを使いましょう。

fa-fwの意味

上の図は公開当時の版で幅を揃えた例です。現在の7.3.1では標準のアイコンも幅が揃うため、この図の「通常」とfa-fwの差がそのまま現れるわけではありません。旧fa-fwは互換用の非推奨クラスで、現行のコードにはfa-width-fixedを使います。

fa-width-fixedはアイコンの幅を決める指定です。アイコンと文字の間だけに隙間を作りたいときは、前後の文字との間隔を別に調整してください。

HTMLコード
<p><i class="fa-solid fa-list-check fa-width-fixed" aria-hidden="true"></i> ここにアイコンを表示</p>
ブラウザ表示

ここにアイコンを表示

回転させる(アニメーション)

<i class="fa-solid fa-list-check fa-spin" aria-hidden="true"></i>

fa-spinというclass名を追加するだけでアイコンをくるくると回すことができます。実際に見てみましょう。

HTMLコード
<i class="fa-regular fa-lemon fa-spin" aria-hidden="true"></i>
<i class="fa-solid fa-gear fa-spin" aria-hidden="true"></i>
ブラウザ表示

FontAwesomeでは他にも色々なアニメーションをつけることができます。詳しくはのちほど解説します。

表示角度を変える

<i class="fa-solid fa-list-check fa-rotate-90" aria-hidden="true"></i>

以下のclass名を追加することで、アイコンを傾けて表示させることもできます。

  • fa-rotate-90:90度傾ける
  • fa-rotate-180:180度傾ける
  • fa-rotate-270:270度傾ける

反転させる

<i class="fa-solid fa-list-check fa-flip-horizontal" aria-hidden="true"></i>

あまり使う機会は無いかもしれませんが反転させることもできます。

  • 指定なし:
  • fa-flip-horizontal:水平方向に反転
  • fa-flip-vertical:垂直方向に反転

アイコンを線で囲う

<i class="fa-solid fa-list-check fa-border" aria-hidden="true"></i>

classにfa-borderを足すとアイコンまわりに線をひくことができます。

HTMLコード
<i class="fa-solid fa-list-check fa-2x fa-border" aria-hidden="true"></i>
ブラウザ表示

アイコンを重ねる

<span class="fa-stack">
  <i class="fa-solid fa-cloud fa-stack-2x" aria-hidden="true"></i>
  <i class="fa-brands fa-twitter fa-stack-1x fa-inverse" aria-hidden="true"></i>
</span>

このようにアイコンどうしを重ねることもできます。使い方は以下のようになります。

  • class名がfa-stackのspanタグの中に、2つのアイコンを入れる
  • 背面のアイコンをはじめに書き、class名にfa-stack-2xを追加
  • 次に前面のアイコンを書き、class名にfa-stack-1xを追加

4. Font AwesomeをCSSの疑似要素で使う方法

ここまではHTMLの中に<iほにゃらら></i>というコードを入れてきましたが、CSSでアイコンを表示させることもできます。具体的には疑似要素(before)を使います。

あわせて読みたいCSSの疑似要素とは?beforeとafterの使い方まとめ

使い方の例

使い方の例は以下のようになります。

【HTML】
<p>これは<span class="bomb">爆弾</span>です。</p>

【CSS】
.bomb::before {
  font: var(--fa-font-solid);
  content: "\f1e2";
}

font: var(--fa-font-solid);でSolidのフォントと太さを指定し、content: "\f1e2";で爆弾のUnicodeを指定します。バックスラッシュを忘れずに書いてください。

公開当時の操作画面(Font Awesome 5)
font awesomeのコード

アイコン種類を示すf1e2のようなコードは各アイコンのページで見ることができます。これをコピペして使いましょう。

HTMLコード
<p>これは<span class="bomb">爆弾</span>です。</p>
CSSコード
.bomb::before {
  font: var(--fa-font-solid);
  content: "\f1e2";
}
ブラウザ表示

これは爆弾です。

注意:スタイルに合うフォントと太さを指定する

疑似要素には、使うスタイルのfont指定が必要です。Solidはvar(--fa-font-solid)、Regularはvar(--fa-font-regular)を使います。これらにはフォント名だけでなくSolidの900、Regularの400という太さも含まれます。

ブランド系のアイコンにはBrandsのフォントを使う

TwitterやFacebookなどのブランド系アイコンを疑似要素で使うときは、font: var(--fa-font-brands);を指定します。BrandsのCSSとWebフォントも読み込んでください。

【HTML】
<p>これは<span class="twitter">ツイッター</span>です。</p>

【CSS】
.twitter::before {
  font: var(--fa-font-brands);
  content: "\f099";
}

これはです。

ブランド系アイコンの見分け方

公開当時の操作画面(Font Awesome 5)
ブランド系アイコンかどうかの見分け方

現在のBrandsのHTMLクラス名はfa-brandsです。上の画像は公開当時のfabという表記を示しています。

見出しにアイコンを使う

見出しにアイコンフォントを使いたいときは以下のような書き方をしましょう。

.icon-heading::before {
  font: var(--fa-font-solid);
  content: "\f00c";
  padding-right: 5px;
  color: #f89174; /* アイコンの色 */
}

padding-rightがアイコンと文字との隙間です。必要に応じて値を調整しましょう。この例は文字とアイコンが同じ大きさで、アイコンだけのサイズは疑似要素のfont-sizeで変えられます。icon-headingを付ければ、h1やh2にも同じCSSを使えます。

HTMLコード
<h3 id="headlines" class="icon-heading">見出しにアイコンを使おう</h3>
CSSコード
.icon-heading::before {
  font: var(--fa-font-solid);
  content: "\f00c";
  padding-right: 5px;
  color: #f89174; /* アイコンの色 */
}
ブラウザ表示

見出しにアイコンを使おう

なお、アイコンを使った見出しデザイン例はこちらの記事で大量に紹介しています。ぜひ参考にして頂ければと思います。

あわせて読みたいCSSのコピペだけ!おしゃれな見出しのデザイン例まとめ68選

アイコンが表示されない?

まずCSSとWebフォントのURL、使用するスタイル、Free版に含まれるアイコンかを確認してください。疑似要素ではfont変数とUnicodeが必要です。公式のトラブルシューティングも参考になります。

箇条書きのマーカーの代わりに使う

リストデザインにアイコンフォントを使うこともできます。具体的なデザイン例をこちらで解説しているので、是非目を通してみてください。

あわせて読みたいコピペで使えるリストデザイン34選:CSSで箇条書きをおしゃれに

6. 色々なアニメーションをつける方法

ここでは、旧記事で使っていたFont Awesome Animation 0.0.10の14種類の動きを、7.3.1のアイコンと組み合わせて再現します。下のCSSはこの14種類に必要な動きだけをまとめたものです。

Font Awesome Animationの使い方

Font Awesome 7.3.1のCSSを読み込んだうえで、下の2つのCSSコードを両方コピーし、自分のCSSファイルへ順番に貼り付けてください。1つ目が動きの定義、2つ目がクラスへの割り当てです。外部のアニメーションCSSやjQueryを追加する必要はありません。

コードを表示
CSS 1:動きの定義(全文)
/*
Font Awesome Animation v0.0.10 motion definitions adapted for current browsers.
https://github.com/l-lin/font-awesome-animation/tree/v0.0.10

The MIT License

Copyright (c) 2014-2017 l-lin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

@keyframes article-faa-wrench {
  0% {
    transform: rotate(-12deg);
  }

  8% {
    transform: rotate(12deg);
  }

  10% {
    transform: rotate(24deg);
  }

  18% {
    transform: rotate(-24deg);
  }

  20% {
    transform: rotate(-24deg);
  }

  28% {
    transform: rotate(24deg);
  }

  30% {
    transform: rotate(24deg);
  }

  38% {
    transform: rotate(-24deg);
  }

  40% {
    transform: rotate(-24deg);
  }

  48% {
    transform: rotate(24deg);
  }

  50% {
    transform: rotate(24deg);
  }

  58% {
    transform: rotate(-24deg);
  }

  60% {
    transform: rotate(-24deg);
  }

  68% {
    transform: rotate(24deg);
  }

  75%, 100% {
    transform: rotate(0deg);
  }
}

@keyframes article-faa-ring {
  0% {
    transform: rotate(-15deg);
  }

  2% {
    transform: rotate(15deg);
  }

  4% {
    transform: rotate(-18deg);
  }

  6% {
    transform: rotate(18deg);
  }

  8% {
    transform: rotate(-22deg);
  }

  10% {
    transform: rotate(22deg);
  }

  12% {
    transform: rotate(-18deg);
  }

  14% {
    transform: rotate(18deg);
  }

  16% {
    transform: rotate(-12deg);
  }

  18% {
    transform: rotate(12deg);
  }

  20%, 100% {
    transform: rotate(0deg);
  }
}

@keyframes article-faa-vertical {
  0% {
    transform: translate(0,-3px);
  }

  4% {
    transform: translate(0,3px);
  }

  8% {
    transform: translate(0,-3px);
  }

  12% {
    transform: translate(0,3px);
  }

  16% {
    transform: translate(0,-3px);
  }

  20% {
    transform: translate(0,3px);
  }

  22%, 100% {
    transform: translate(0,0);
  }
}

@keyframes article-faa-horizontal {
  0% {
    transform: translate(0,0);
  }

  6% {
    transform: translate(5px,0);
  }

  12% {
    transform: translate(0,0);
  }

  18% {
    transform: translate(5px,0);
  }

  24% {
    transform: translate(0,0);
  }

  30% {
    transform: translate(5px,0);
  }

  36%, 100% {
    transform: translate(0,0);
  }
}

@keyframes article-faa-flash {
  0%, 100%, 50% {
    opacity: 1;
  }

  25%, 75% {
    opacity: 0;
  }
}

@keyframes article-faa-bounce {
  0%, 10%, 20%, 50%, 80%, 100% {
    transform: translateY(0);
  }

  40% {
    transform: translateY(-15px);
  }

  60% {
    transform: translateY(-15px);
  }
}

@keyframes article-faa-spin {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(359deg);
  }
}

@keyframes article-faa-float {
  0% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-6px);
  }

  100% {
    transform: translateY(0);
  }
}

@keyframes article-faa-pulse {
  0% {
    transform: scale(1.1);
  }

  50% {
    transform: scale(0.8);
  }

  100% {
    transform: scale(1.1);
  }
}

@keyframes article-faa-tada {
  0% {
    transform: scale(1);
  }

  10%, 20% {
    transform: scale(.9) rotate(-8deg);
  }

  30%, 50%, 70% {
    transform: scale(1.3) rotate(8deg);
  }

  40%, 60% {
    transform: scale(1.3) rotate(-8deg);
  }

  80%, 100% {
    transform: scale(1) rotate(0);
  }
}

@keyframes article-faa-passing {
  0% {
    transform: translateX(-50%);
    opacity: 0;
  }

  50% {
    transform: translateX(0%);
    opacity: 1;
  }

  100% {
    transform: translateX(50%);
    opacity: 0;
  }
}

@keyframes article-faa-passing-reverse {
  0% {
    transform: translateX(50%);
    opacity: 0;
  }

  50% {
    transform: translateX(0%);
    opacity: 1;
  }

  100% {
    transform: translateX(-50%);
    opacity: 0;
  }
}

@keyframes article-faa-burst {
  0% {
    opacity: .6;
  }

  50% {
    transform: scale(1.8);
    opacity: 0;
  }

  100% {
    opacity: 0;
  }
}
コードを表示
CSS 2:クラス・操作・動きを減らす設定(全文)
/* Copy after the complete motion definitions above. */
.faa-wrench.animated,
.faa-trigger.animated-hover:hover .faa-wrench,
.faa-trigger.animated-hover:focus-visible .faa-wrench,
.faa-parent.animated-hover:hover .faa-wrench,
.faa-parent.animated-hover:focus-within .faa-wrench {
  animation: article-faa-wrench 2.5s ease infinite;
}

.faa-ring.animated,
.faa-trigger.animated-hover:hover .faa-ring,
.faa-trigger.animated-hover:focus-visible .faa-ring,
.faa-parent.animated-hover:hover .faa-ring,
.faa-parent.animated-hover:focus-within .faa-ring {
  animation: article-faa-ring 2s ease infinite;
}

.faa-horizontal.animated,
.faa-trigger.animated-hover:hover .faa-horizontal,
.faa-trigger.animated-hover:focus-visible .faa-horizontal,
.faa-parent.animated-hover:hover .faa-horizontal,
.faa-parent.animated-hover:focus-within .faa-horizontal {
  animation: article-faa-horizontal 2s ease infinite;
}

.faa-vertical.animated,
.faa-trigger.animated-hover:hover .faa-vertical,
.faa-trigger.animated-hover:focus-visible .faa-vertical,
.faa-parent.animated-hover:hover .faa-vertical,
.faa-parent.animated-hover:focus-within .faa-vertical {
  animation: article-faa-vertical 2s ease infinite;
}

.faa-flash.animated,
.faa-trigger.animated-hover:hover .faa-flash,
.faa-trigger.animated-hover:focus-visible .faa-flash,
.faa-parent.animated-hover:hover .faa-flash,
.faa-parent.animated-hover:focus-within .faa-flash {
  animation: article-faa-flash 2s ease infinite;
}

.faa-bounce.animated,
.faa-trigger.animated-hover:hover .faa-bounce,
.faa-trigger.animated-hover:focus-visible .faa-bounce,
.faa-parent.animated-hover:hover .faa-bounce,
.faa-parent.animated-hover:focus-within .faa-bounce {
  animation: article-faa-bounce 2s ease infinite;
}

.faa-spin.animated,
.faa-trigger.animated-hover:hover .faa-spin,
.faa-trigger.animated-hover:focus-visible .faa-spin,
.faa-parent.animated-hover:hover .faa-spin,
.faa-parent.animated-hover:focus-within .faa-spin {
  animation: article-faa-spin 1.5s linear infinite;
}

.faa-float.animated,
.faa-trigger.animated-hover:hover .faa-float,
.faa-trigger.animated-hover:focus-visible .faa-float,
.faa-parent.animated-hover:hover .faa-float,
.faa-parent.animated-hover:focus-within .faa-float {
  animation: article-faa-float 2s linear infinite;
}

.faa-pulse.animated,
.faa-trigger.animated-hover:hover .faa-pulse,
.faa-trigger.animated-hover:focus-visible .faa-pulse,
.faa-parent.animated-hover:hover .faa-pulse,
.faa-parent.animated-hover:focus-within .faa-pulse {
  animation: article-faa-pulse 2s linear infinite;
}

.faa-shake.animated,
.faa-trigger.animated-hover:hover .faa-shake,
.faa-trigger.animated-hover:focus-visible .faa-shake,
.faa-parent.animated-hover:hover .faa-shake,
.faa-parent.animated-hover:focus-within .faa-shake {
  animation: article-faa-wrench 2.5s ease infinite;
}

.faa-tada.animated,
.faa-trigger.animated-hover:hover .faa-tada,
.faa-trigger.animated-hover:focus-visible .faa-tada,
.faa-parent.animated-hover:hover .faa-tada,
.faa-parent.animated-hover:focus-within .faa-tada {
  animation: article-faa-tada 2s linear infinite;
}

.faa-passing.animated,
.faa-trigger.animated-hover:hover .faa-passing,
.faa-trigger.animated-hover:focus-visible .faa-passing,
.faa-parent.animated-hover:hover .faa-passing,
.faa-parent.animated-hover:focus-within .faa-passing {
  animation: article-faa-passing 2s linear infinite;
}

.faa-passing-reverse.animated,
.faa-trigger.animated-hover:hover .faa-passing-reverse,
.faa-trigger.animated-hover:focus-visible .faa-passing-reverse,
.faa-parent.animated-hover:hover .faa-passing-reverse,
.faa-parent.animated-hover:focus-within .faa-passing-reverse {
  animation: article-faa-passing-reverse 2s linear infinite;
}

.faa-burst.animated,
.faa-trigger.animated-hover:hover .faa-burst,
.faa-trigger.animated-hover:focus-visible .faa-burst,
.faa-parent.animated-hover:hover .faa-burst,
.faa-parent.animated-hover:focus-within .faa-burst {
  animation: article-faa-burst 2s infinite linear;
}

.faa-trigger {
  border: 0;
  padding: 4px;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.faa-trigger:focus-visible {
  outline: 2px solid #668ad8;
  outline-offset: 3px;
}
.faa-skyblue {
  color: skyblue;
}
.faa-parent {
  font-size: 1.2em;
}
@media (prefers-reduced-motion: reduce) {
  .animated,
  .animated-hover i {
    animation: none !important;
  }
}

加えたい動きのclass名を追加

アニメーションを加えたいときは、以下のように特定のclass名を追加します。

<i class="fa-solid fa-list-check faa-wrench animated" aria-hidden="true"></i>

たとえば、faa-wrench animatedというclassを追加すれば、前後に揺れるような動きをつけることができます。アイコンはどれを選んでも構いません。

HTMLコード
<i class="fa-brands fa-twitter faa-wrench animated" aria-hidden="true"></i>
ブラウザ表示

合わせてアイコンの色を変えたり、大きさを変えることもできます(さきほど紹介した方法と同じです)。

アニメーション一覧

下の14行は、上の2つのCSSを使った実演です。各行のクラス名とHTMLコードを組み合わせて使ってください。faa-pulseは拡大・縮小する旧ライブラリの効果で、Font Awesome本体の回転するfa-pulseとは異なります。

動きclass名コード例
レンチ風faa-wrench animated<i class="fa-brands fa-twitter faa-wrench animated" aria-hidden="true"></i>
ブルブルfaa-ring animated<i class="fa-solid fa-bus faa-ring animated" aria-hidden="true"></i>
横揺れfaa-horizontal animated<i class="fa-solid fa-person faa-horizontal animated" aria-hidden="true"></i>
縦揺れfaa-vertical animated<i class="fa-regular fa-futbol faa-vertical animated" aria-hidden="true"></i>
点滅faa-flash animated<i class="fa-solid fa-star faa-flash animated" aria-hidden="true"></i>
跳ねfaa-bounce animated<i class="fa-solid fa-music faa-bounce animated" aria-hidden="true"></i>
スピンfaa-spin animated<i class="fa-solid fa-arrows-rotate faa-spin animated" aria-hidden="true"></i>
浮遊faa-float animated<i class="fa-solid fa-ship faa-float animated" aria-hidden="true"></i>
パルスfaa-pulse animated<i class="fa-solid fa-heart faa-pulse animated" aria-hidden="true"></i>
シェイクfaa-shake animated<i class="fa-brands fa-facebook faa-shake animated" aria-hidden="true"></i>
ジャジャーンfaa-tada animated<i class="fa-solid fa-plane faa-tada animated" aria-hidden="true"></i>
通過faa-passing animated<i class="fa-solid fa-bicycle faa-passing animated" aria-hidden="true"></i>
バックfaa-passing-reverse animated<i class="fa-solid fa-bicycle faa-passing-reverse animated" aria-hidden="true"></i>
バーストfaa-burst animated<i class="fa-solid fa-bomb faa-burst animated" aria-hidden="true"></i>

アイコンへのhover時のみ動かす

この例はアイコンだけをボタンにして、カーソルを当てたときに動かします。キーボードのTabキーでボタンへフォーカスしたときも同じ動きになります。上の2つのCSSをコピーしてから使ってください。

HTMLコード
<p><button type="button" class="faa-trigger faa-skyblue animated-hover" aria-label="アイコンにフォーカスして動きを確認">
  <i class="fa-brands fa-twitter fa-2x faa-wrench" aria-hidden="true"></i>
</button>←カーソルを当ててね</p>
ブラウザ表示

←カーソルを当ててね

親要素へのhover時のみ動かす

親要素にカーソルを当てたときだけ、子のアイコンを動かすこともできます。この例は文章を含むpにカーソルを当てるか、中のボタンへキーボードでフォーカスすると動きます。

方法

  1. 親要素に「faa-parent animated-hover」というclass名を追加
  2. アイコンには動きのクラス名(例:faa-wrench)だけ追加し、animatedは付けない。操作できるようにボタンで囲む。
HTMLコード
<p class="faa-parent animated-hover">
  <button type="button" class="faa-trigger">
    <i class="fa-brands fa-twitter faa-wrench" aria-hidden="true"></i> ここにhover
  </button>
</p>
ブラウザ表示

シェアボタンなどにも応用できます。動きの元になったFont Awesome Animation 0.0.10はMITライセンスです。このページのCSSでは、現在のブラウザー向けの書き方とキーボード操作を追加しています。端末で動きを減らす設定をしている場合には停止します。