logo Fonnpo

お問い合わせ
2026年4月30日 3 分で読める Fonnpo

Faviconを動かす

この記事を読んでいるとき、タブの上部で何かが動いていることに気づいたでしょう。これが動的なfaviconです — Gmailは新しいメールの数を表示するために使用し、Discordは通知ドットを表示するために使用します。原理は同じで、キャンバス上で描けるものによってほぼ無限の可能性があります。

#Favicon#Animation

X でこのエフェクトを見かけて、favicon アイコンが動くのがとてもクールだと思いました。

x favicon animated

サイト: Favicon.im

テストコード

Javascript
        // 1. favicon の link 要素を取得、なければ新規作成
let link = document.querySelector('link[rel~="icon"]')
if (!link) {
  link = document.createElement('link')
  link.rel = 'icon'
  document.head.appendChild(link)
}

// 2. 非表示の canvas に1フレーム描画
const canvas = document.createElement('canvas')
canvas.width = 32
canvas.height = 32
const ctx = canvas.getContext('2d')

function drawFrame(t) {
  const scale = 0.5 + 0.5 * Math.abs(Math.sin(t / 400))
  ctx.clearRect(0, 0, 32, 32)
  ctx.fillStyle = '#ef4444'
  ctx.beginPath()
  ctx.arc(16, 16, 14 * scale, 0, Math.PI * 2)
  ctx.fill()

  // 3. canvas を data URL にして favicon に反映
  link.href = canvas.toDataURL('image/png')

  requestAnimationFrame(drawFrame)
}

requestAnimationFrame(drawFrame)

    
Fonnpo