logo Fonnpo

联系我
2026年4月30日 3 分鐘閱讀 Fonnpo

让您的 Favicon 动起来

读这篇文章的时候,你大概已经注意到这个标签页顶上有东西在动了。这就是动态 favicon —— Gmail 用它显示新邮件计数,Discord 用它显示通知红点,原理一样,能玩出的花样几乎只看你能在 canvas 上画出什么。

#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 上画一帧
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