🧱 结构分析
css
<div class="rainbow-button">
<div class="rainbow-button-inner cursor-pointer">
<span>Brain like that a tool. Clever like a colleague</span>
</div>
</div>
🧩 HTML 结构分层
.rainbow-button
: 最外层容器,实现渐变边框 与发光动画.rainbow-button-inner
: 内层背景按钮,承载文字内容和交互动画<span>
: 实际显示的按钮文字
🎨 样式解析(CSS)
1. 🌈 .rainbow-button
: 外层彩虹边框 + 动态渐变动画
css
background: linear-gradient(...); /* 多色渐变 */
background-size: 300% 300%; /* 扩大尺寸以便于动画滑动 */
animation: gradientShift 2s ease infinite;
padding: 6px; /* 内边距制造边框效果 */
border-radius: 50px;
box-shadow: ...; /* 彩色发光边缘 */
特点:
- 多色
linear-gradient
实现彩虹色背景 - 配合
background-size + animation
制造滑动渐变的视觉流动感 padding
用于将内部按钮推开,形成边框效果
2. 💜 .rainbow-button-inner
: 内层实际按钮
css
background: #8b5cf6; /* 固定紫色背景 */
border-radius: 44px;
padding: 10px 25px;
color: white;
font-weight: 600;
font-size: 1.2rem;
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
min-width: 300px;
transition: all 0.6s ease;
特点:
- 统一圆角 + 内边距构建柔和按钮样式
flex
布局方便后续添加图标、loading 等元素transition
实现平滑过渡
3. 🖱️ :hover
效果(内外联动)
css
.rainbow-button:hover .rainbow-button-inner {
background: #7c3aed;
transform: translateY(-2px);
}
- 鼠标悬停时按钮向上浮动 + 背景色加深,增加交互反馈感
css
.rainbow-button:hover {
box-shadow: ...; /* 更强烈的发光感 */
animation: gradientShift 1s ease infinite, glow 3s ease-in-out infinite alternate;
}
- 外层边框加速流动 + 发光增强
4. 🌌 @keyframes gradientShift
: 背景滑动动画核心
css
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
- 实现渐变颜色左右滑动动画
- 搭配
background-size: 300% 300%
产生平滑流动感
✅ 优点总结
特性 | 说明 |
---|---|
🌈 彩虹流动边框 | 多色渐变+动画形成动态边框 |
🔮 发光特效 | 多层 box-shadow 叠加制造霓虹灯感 |
🧲 鼠标交互 | hover 时背景色变换 + 浮动 + 发光增强 |
🎯 良好的布局可扩展性 | flex 结构、gap 可灵活支持图标与文字搭配 |
📱 适配性好 | min-width 限制保证内容不溢出,适合响应式场景 |
📌 使用建议
-
用途场景:
- Banner 区域 CTA 按钮
- AI、科技类品牌官网
- 营销推广页、启动页等强调视觉吸引力场景
-
性能优化:
- 渐变动画耗性能,移动端可降级为静态渐变
- 可设置
prefers-reduced-motion
进行动画关闭优化
-
内容自定义:
-
可以添加图标或 Loading 动画,例如:
xml<div class="rainbow-button-inner"> <svg class="w-5 h-5" ... /> <span>Click me</span> </div>
-
🧪 拓展动画效果(可选)
css
@keyframes glow {
0% {
box-shadow: 0 0 10px #a3e635, 0 0 20px #bef264;
}
100% {
box-shadow: 0 0 20px #86efac, 0 0 40px #bbf7d0;
}
}
glow
提供呼吸灯般发光特效- 可用于
.rainbow-button:hover
提升视觉层级感