头像光环悬停 4 种特效(脉冲光环/虚线旋转/渐变辉光 CSS 源码)

CSS 许可:自研原创

头像光环悬停 4 种玩法:光环扩散脉冲、虚线旋转光环、渐变辉光描边、光环加放大,纯 CSS 实现,适合用户列表、团队成员、评论头像。

效果演示(真实可交互)

把鼠标移到任意头像上,观察光环的出现方式。头像本身用渐变圆加表情演示,替换成真实图片后效果一致,伪元素实现的光环不会影响头像裁切。

🦊
光环扩散
🐼
虚线旋转
🦉
渐变辉光
🐨
光环放大

完整代码

HTML 结构:.av-ring 是头像容器,.av-face 是头像本体,光环全部由 ::before 伪元素实现:

<figure class="av-card">
  <div class="av-ring av-pulse"><span class="av-face">🦊</span></div>
  <figcaption>光环扩散</figcaption>
</figure>
<!-- 换用 av-dash / av-glow / av-zoom 切换玩法 -->

核心 CSS:

.av-ring { position: relative; width: 88px; height: 88px; border-radius: 50%; }
.av-face {
  position: absolute;
  inset: 4px;
  border-radius: 50%;
  background: linear-gradient(135deg, #4facfe, #00f2fe);
  display: flex; align-items: center; justify-content: center;
  transition: transform .4s cubic-bezier(.22, .61, .36, 1);
}

/* ① 光环扩散:圆环 hover 时放大并淡出,模拟脉冲 */
.av-pulse::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: 50%;
  border: 2px solid #6c8cff;
  opacity: 0;
  transition: transform .6s ease-out, opacity .6s ease-out;
}
.av-card:hover .av-pulse::before { transform: scale(1.45); opacity: 1; }

/* ② 虚线旋转光环 */
.av-dash::before {
  content: '';
  position: absolute; inset: -8px;
  border-radius: 50%;
  border: 2px dashed rgba(108, 140, 255, .85);
  opacity: 0;
}
.av-card:hover .av-dash::before {
  opacity: 1;
  animation: av-spin 6s linear infinite;
}
@keyframes av-spin { to { transform: rotate(360deg); } }

/* ③ 渐变辉光:mask 挖空出渐变描边 + drop-shadow 光晕 */
.av-glow::before {
  content: '';
  position: absolute; inset: -3px;
  border-radius: 50%;
  padding: 3px;
  background: linear-gradient(135deg, #ff6ec4, #7873f5, #4ade80);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
}
.av-card:hover .av-glow::before {
  opacity: 1;
  filter: drop-shadow(0 0 10px rgba(120, 115, 245, .8));
}

参数说明

参数默认值说明
头像尺寸88px.av-ring 的宽高,光环随之缩放
扩散倍率1.45脉冲光环放大的倍数
虚线内边距-8px虚线光环与头像的距离,负数表示向外
旋转时长6s虚线光环转一圈的时间
渐变描边粗细3pxpadding: 3px 即描边宽度
光晕模糊10pxdrop-shadow 的模糊半径

兼容性与性能

常见问题

Q: 光环想一直显示而不是悬停才出现? 把 ::before 的 opacity: 0 删除、默认态直接给 opacity: 1,并把 animation 移出 hover 规则即可。

Q: 渐变描边在 Firefox 上显示不出来? Firefox 需要标准 mask-composite: exclude,同时保留 -webkit- 前缀;如果仍异常,改用 background: conic-gradient(...) 加 inset 遮罩方案。

Q: 真实头像怎么放进去? 把 .av-face 换成 <img>,设置 width: 100%; height: 100%; border-radius: 50%; object-fit: cover;,inset: 4px 会让头像与光环之间留出空隙。

Q: 可以商用吗? 可以,本组件为粤喵自研原创,免费商用无需署名,欢迎调整颜色、尺寸与动画时长。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核