mcpField
C
css-hover-effects

css-hover-effects

github.com/dabaibian设计与 UI638 次安装23 周前更新
代码仓库

关于 css-hover-effects

css-hover-effects 提供可直接使用的 CSS 悬停效果及样式适配指南,面向网页设计与开发。它根据页面视觉风格帮助选择和组合效果,并涵盖减少动态效果偏好。

主要功能

  1. 01根据 CSS 判断页面视觉风格
  2. 02通过风格兼容矩阵选择效果
  3. 03提供多种可复制的 CSS 效果
  4. 04指导效果组合与动画时长
  5. 05提供减少动态效果的无障碍建议

适用场景

  1. 01为导航链接和按钮添加悬停状态
  2. 02选择适合现有视觉设计的效果
  3. 03为悬停动画应用动态偏好设置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dabaibian/css-skills --skill css-hover-effects

安装后在 Claude Code 中输入/css-hover-effects确认已加载。

详细介绍

CSS 悬停效果

零依赖、SSR 安全的悬停效果模式,适用于任何网页。 自动让效果与现有设计风格相匹配。


步骤 1 — 检测设计风格

选择效果之前,先阅读现有 CSS 并对设计进行分类。 按以下顺序检查这些信号:

信号检查清单
border-radius
  0–3px      → SHARP (corporate, enterprise)
  4–8px      → STANDARD (SaaS, neutral)
  12px+      → ROUNDED (consumer, friendly)

color saturation (look at primary/accent colors)
  muted, low-saturation (HSL s < 40%)  → MINIMAL
  moderate (40–70%)                    → STANDARD
  vivid, high-saturation (> 70%)       → BOLD

existing transitions
  none                → conservative, start subtle
  transition: all     → open to most effects
  specific property   → match their approach

spacing & density
  large padding/gaps  → marketing / hero page → bolder effects OK
  tight layout        → dashboard / app → subtle only

shadow usage
  no box-shadow       → FLAT design → avoid float-shadow
  has box-shadow      → ELEVATED → float-shadow fits
  
font style
  serif               → editorial / formal → no bouncy effects
  display / heavy     → bold brand → strong effects OK
  system-ui / sans    → neutral → match by other signals
风格分类

检查完信号后,选择一个类别:

风格信号示例
MINIMAL低饱和色彩 + 大圆角 + 无阴影 + 系统字体Notion、Linear、Vercel
BOLD鲜艳色彩 + 任意圆角 + 强阴影 + 展示字体Stripe、创意机构
PLAYFUL鲜艳色彩 + 大圆角 + 活泼字体 + 多彩调色板Duolingo、消费类应用
CORPORATE低饱和/藏青色彩 + 小圆角 + 紧凑密度 + 无装饰B2B SaaS、仪表板
DARK-PREMIUM深色背景 + 发光点缀 + 中等圆角Raycast、Linear 深色主题、开发工具

步骤 2 — 从矩阵中挑选效果

效果 × 风格兼容性矩阵
效果MINIMALBOLDPLAYFULCORPORATEDARK-PREMIUM
Float✅✅✅✅✅
Float Shadow❌(扁平)✅✅❌✅
Glow❌✅✅❌✅ ★ 最佳
Underline From Center✅ ★ 最佳✅✅✅✅
Sweep To Right❌(过于夸张)✅✅❌❌
Grow✅✅✅✅✅
Pulse Grow❌✅✅❌❌
Pop❌✅✅ ★ 最佳❌❌
Wobble❌✅✅❌❌
Buzz❌✅✅❌❌
Background Fade✅ ★ 最佳✅✅✅ ★ 最佳✅
Shutter In❌✅ ★ 最佳✅❌✅
Border Fade✅✅✅✅✅
Ripple Out❌✅✅❌✅
Shadow Radial❌✅❌❌✅ ★ 最佳
Curl❌✅✅❌❌
Bubble(工具提示)✅✅✅✅✅

规则:

  • MINIMAL:每页最多使用 2 种效果,保持 duration ≤ 250ms
  • CORPORATE:只使用 Background Fade、Underline、Border、微妙的 Float——不使用其他效果
  • DARK-PREMIUM:优先选择 Glow 和 Shadow Radial,而非移动效果
  • PLAYFUL:组合 2 种效果(例如 Pop + 背景颜色变化)
  • 页面上出现超过 3 次的元素,绝不使用 Wobble/Buzz

步骤 3 — 效果库(可直接复制的 CSS)

使用 CSS 自定义属性来匹配现有调色板。 将 var(--accent) 替换为项目实际使用的强调色。


类别:2D 过渡
Float

使元素向上浮起。通用,适用于所有风格。

.hvr-float {
  --duration: 0.3s;
  transition: transform var(--duration) ease;
}
.hvr-float:hover {
  transform: translateY(-6px);
}

对于 MINIMAL:使用 translateY(-4px)。对于 BOLD/PLAYFUL:使用 translateY(-8px)。


Float Shadow

浮起 + 匹配的阴影。仅在设计已有阴影时使用。

.hvr-float-shadow {
  --duration: 0.3s;
  --shadow-color: rgba(0, 0, 0, 0.12);
  transition: transform var(--duration) ease,
              box-shadow var(--duration) ease;
}
.hvr-float-shadow:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 32px var(--shadow-color);
}

提示:将 --shadow-color 设为强调色的有色变体,营造更丰富的效果。


Grow

轻微放大。适用于任何元素,适合卡片和图像。

.hvr-grow {
  transition: transform 0.2s ease;
}
.hvr-grow:hover {
  transform: scale(1.05);
}

Shrink

缩小——传达“可按压”的含义。适合图标按钮。

.hvr-shrink {
  transition: transform 0.2s ease;
}
.hvr-shrink:hover {
  transform: scale(0.94);
}

Pop

弹簧般缩放并带有弹性过冲。仅适用于 PLAYFUL 和 BOLD。

.hvr-pop {
  transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.hvr-pop:hover {
  transform: scale(1.15);
}

Pulse Grow

脉冲放大动画。吸引用户注意单个 CTA。 谨慎使用——每页最多一个元素。

.hvr-pulse-grow {
  animation: hvr-pulse-grow 0.4s linear infinite alternate;
}
@keyframes hvr-pulse-grow {
  to { transform: scale(1.06); }
}

Wobble Horizontal

活泼的左右摇晃效果。仅用于标签、徽章和有趣的 UI。

.hvr-wobble-horizontal:hover {
  animation: hvr-wobble-h 0.8s ease both;
}
@keyframes hvr-wobble-h {
  16.65% { transform: translateX(6px); }
  33.3%  { transform: translateX(-5px); }
  49.95% { transform: translateX(4px); }
  66.6%  { transform: translateX(-2px); }
  83.25% { transform: translateX(1px); }
  100%   { transform: translateX(0); }
}

Buzz

快速振动效果。仅用于警报、错误状态和通知图标。

.hvr-buzz:hover {
  animation: hvr-buzz 0.15s linear infinite;
}
@keyframes hvr-buzz {
  50% { transform: translateX(2px) rotate(1deg); }
  100% { transform: translateX(-2px) rotate(-1deg); }
}

Bob

轻柔的上下浮动动画。持续播放,不由悬停触发。 用于装饰性主视觉元素和 Logo 标记。

.hvr-bob {
  animation: hvr-bob 1.5s ease infinite;
}
@keyframes hvr-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}

类别:背景过渡
Background Fade

悬停时出现色彩渐变。最安全的背景效果——适用于各种场景。

.hvr-bg-fade {
  --bg-hover: rgba(99, 102, 241, 0.08); /* use accent at 8% opacity */
  transition: background-color 0.25s ease;
}
.hvr-bg-fade:hover {
  background-color: var(--bg-hover);
}

CORPORATE 的默认效果。适用于表格行、菜单项和列表项。


Sweep To Right

纯色从左侧扫入。效果醒目——仅适用于 BOLD 和 PLAYFUL。

.hvr-sweep-right {
  --sweep-color: var(--accent, #6366f1);
  position: relative;
  z-index: 1;
  overflow: hidden;
  transition: color 0.3s ease;
}
.hvr-sweep-right::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--sweep-color);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
  z-index: -1;
}
.hvr-sweep-right:hover::before { transform: scaleX(1); }
.hvr-sweep-right:hover { color: white; }

Shutter In Horizontal

分开的遮板从中心打开。适用于视觉冲击力强的 CTA 按钮。

.hvr-shutter-in-h {
  --shutter-color: var(--accent, #6366f1);
  position: relative;
  z-index: 1;
  overflow: hidden;
  transition: color 0.35s ease;
}
.hvr-shutter-in-h::before,
.hvr-shutter-in-h::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: 50%;
  background: var(--shutter-color);
  transition: transform 0.35s ease;
  z-index: -1;
}
.hvr-shutter-in-h::before { left: 0; transform: scaleX(0); transform-origin: left; }
.hvr-shutter-in-h::after  { right: 0; transform: scaleX(0); transform-origin: right; }
.hvr-shutter-in-h:hover::before,
.hvr-shutter-in-h:hover::after { transform: scaleX(1); }
.hvr-shutter-in-h:hover { color: white; }

Radial Out

圆形波纹从中心扩散。适用于图像缩略图和头像。

.hvr-radial-out {
  --radial-color: var(--accent, #6366f1);
  position: relative;
  z-index: 1;
  overflow: hidden;
  transition: color 0.3s ease;
}
.hvr-radial-out::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--radial-color);
  transform: scale(0);
  transition: transform 0.4s ease;
  z-index: -1;
}
.hvr-radial-out:hover::before { transform: scale(2.5); border-radius: 0; }
.hvr-radial-out:hover { color: white; }

类别:边框过渡效果
从中心向外的下划线

文本下方的线条从中心向外延伸。适用于通用导航链接。

.hvr-underline-center {
  --line-color: var(--accent, #6366f1);
  --line-height: 2px;
  position: relative;
}
.hvr-underline-center::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 50%; right: 50%;
  height: var(--line-height);
  background: var(--line-color);
  transition: left 0.25s ease, right 0.25s ease;
}
.hvr-underline-center:hover::after { left: 0; right: 0; }

从左侧延伸的下划线

线条从左侧滑入。方向感比中心版本更强。

.hvr-underline-left {
  --line-color: var(--accent, #6366f1);
  position: relative;
}
.hvr-underline-left::after {
  content: '';
  position: absolute;
  bottom: -2px; left: 0; right: 100%;
  height: 2px;
  background: var(--line-color);
  transition: right 0.25s ease;
}
.hvr-underline-left:hover::after { right: 0; }

边框淡入

悬停时显示细边框。适用于卡片、面板和图片容器。

.hvr-border-fade {
  --border-color: var(--accent, #6366f1);
  border: 2px solid transparent;
  transition: border-color 0.25s ease;
}
.hvr-border-fade:hover {
  border-color: var(--border-color);
}

涟漪扩散

边框涟漪向外扩散。适用于圆形按钮和图标按钮。

.hvr-ripple-out {
  --ripple-color: var(--accent, #6366f1);
  position: relative;
}
.hvr-ripple-out::before {
  content: '';
  position: absolute;
  inset: 0;
  border: 2px solid var(--ripple-color);
  border-radius: inherit;
  opacity: 0;
  transform: scale(1);
  transition: transform 0.4s ease, opacity 0.4s ease;
}
.hvr-ripple-out:hover::before {
  transform: scale(1.12);
  opacity: 1;
}

揭示(下划线揭示)

文字逐渐显露,仿佛揭开下方的彩色条。适用于强调链接。

.hvr-reveal {
  --reveal-color: var(--accent, #6366f1);
  position: relative;
  overflow: hidden;
}
.hvr-reveal::after {
  content: '';
  position: absolute;
  bottom: 0; left: -100%;
  width: 100%; height: 2px;
  background: var(--reveal-color);
  transition: left 0.3s ease;
}
.hvr-reveal:hover::after { left: 0; }

类别:阴影与发光效果
发光

悬停时呈现彩色光晕。是 DARK-PREMIUM 风格的标志性效果。

.hvr-glow {
  --glow-color: rgba(99, 102, 241, 0.5); /* use accent at 50% opacity */
  transition: box-shadow 0.3s ease;
}
.hvr-glow:hover {
  box-shadow: 0 0 18px var(--glow-color);
}

用于深色背景:将不透明度提高至 0.7。用于浅色背景:将不透明度设为 0.3。


阴影

悬停时呈现方向性阴影。适用于白色背景上的卡片。

.hvr-shadow {
  transition: box-shadow 0.3s ease;
}
.hvr-shadow:hover {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}

径向阴影

向内扩散的径向阴影——营造戏剧性的聚焦效果。仅适用于 DARK-PREMIUM。

.hvr-shadow-radial {
  --glow: rgba(99, 102, 241, 0.35);
  transition: box-shadow 0.4s ease;
}
.hvr-shadow-radial:hover {
  box-shadow: 0 0 0 4px var(--glow), 0 0 40px var(--glow);
}

类别:图标(带文字)

当按钮或导航项同时包含文字和图标时使用。

图标向前滑动

悬停时图标向右滑动。适用于带有 → 箭头的导航项。

.hvr-icon-forward .icon {
  transform: translateX(0);
  transition: transform 0.2s ease;
}
.hvr-icon-forward:hover .icon {
  transform: translateX(4px);
}

图标浮动

图标向上浮动。适用于工具栏和侧边栏中的图标按钮。

.hvr-icon-float .icon {
  transition: transform 0.3s ease;
}
.hvr-icon-float:hover .icon {
  transform: translateY(-4px);
}

图标旋转

悬停时图标旋转。适用于刷新、设置和加载图标。

.hvr-icon-spin .icon {
  transition: transform 0.3s ease;
}
.hvr-icon-spin:hover .icon {
  transform: rotate(90deg);
}

图标放大

图标缩放放大,文字保持静止。

.hvr-icon-grow .icon {
  transition: transform 0.2s ease;
}
.hvr-icon-grow:hover .icon {
  transform: scale(1.3);
}

类别:气泡(工具提示)

需要通过悬停触发工具提示样式的提示框时使用。

上方气泡

悬停时,工具提示显示在元素上方。

.hvr-bubble-top {
  position: relative;
}
.hvr-bubble-top::before {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%) translateY(6px);
  background: #1a1a2e;
  color: white;
  padding: 6px 12px;
  border-radius: 6px;
  font-size: 12px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.hvr-bubble-top::after {
  content: '';
  position: absolute;
  bottom: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%) translateY(6px);
  border: 5px solid transparent;
  border-top-color: #1a1a2e;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.hvr-bubble-top:hover::before,
.hvr-bubble-top:hover::after {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

用法:<button class="hvr-bubble-top" data-tooltip="Click to save">Save</button>


类别:卷角效果
右下角卷页

在右下角呈现卷页效果。适用于创意类/作品集网站。

.hvr-curl-bottom-right {
  position: relative;
  overflow: hidden;
}
.hvr-curl-bottom-right::before {
  content: '';
  position: absolute;
  bottom: 0; right: 0;
  width: 0; height: 0;
  background: linear-gradient(
    225deg,
    #fff 45%, rgba(0,0,0,0.08) 50%, rgba(0,0,0,0.03) 56%, transparent 80%
  );
  transition: width 0.3s ease, height 0.3s ease;
  box-shadow: -1px -1px 4px rgba(0,0,0,0.1);
}
.hvr-curl-bottom-right:hover::before {
  width: 40px;
  height: 40px;
}

第 4 步 — 组合规则

安全组合(可用于同一元素)
  • 浮动 + 边框淡入
  • 浮动阴影 + 放大(仅轻微放大,最大为 1.03)
  • 从中心向外的下划线 + :hover 时的颜色过渡
  • 背景淡入 + 图标向前滑动
  • 发光 + 径向阴影(仅适用于 DARK-PREMIUM)
切勿组合
  • 扫掠 + 浮动(会相互争夺注意力)
  • 摇摆 + 嗡鸣(过于混乱)
  • 脉冲放大 + 任何其他动画(有引发癫痫发作的风险)
  • 卷角 + 背景过渡(视觉冲突)
持续时间指南
MINIMAL style:     150–200ms  ease
CORPORATE style:   200–250ms  ease
STANDARD style:    200–300ms  ease
BOLD style:        250–350ms  ease
PLAYFUL style:     200–350ms  cubic-bezier(0.34, 1.56, 0.64, 1)
无障碍

始终遵循 prefers-reduced-motion:

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

应用悬停效果时,在全局样式表中添加此代码块一次。


第 5 步 — 应用检查清单

输出代码前,请确认:

  • 已识别设计风格并说明选择理由
  • 选择效果前已检查兼容性矩阵
  • 使用了与现有调色板关联的 CSS 自定义属性
  • 已应用 prefers-reduced-motion 代码块
  • 每个元素最多使用 1 种动画效果(不叠加)
  • 每页使用「脉冲放大」的元素不超过 1 个
  • 每页使用「摇摆/嗡鸣」的元素不超过 3 个
  • 所有 position: relative + overflow: hidden 前置条件均已设置

快速参考 — 按元素类型选择效果

元素极简大胆活泼企业风格DARK-PREMIUM
导航链接中心下划线向右扫掠弹出 + 变色背景淡入下划线 + 发光
主按钮放大 + 边框淡入百叶窗进入弹出背景淡入发光
次要按钮边框淡入向右扫掠摇摆边框淡入边框 + 发光
卡片浮动浮动阴影弹出 + 阴影背景淡入发光
图标按钮图标浮动图标旋转图标放大图标向前滑动图标浮动 + 发光
标签/徽章放大弹出弹出 + 变色背景淡入放大
图片放大浮动阴影浮动放大发光
表格行背景淡入背景淡入背景淡入背景淡入背景淡入
工具提示触发元素上方气泡上方气泡上方气泡上方气泡上方气泡

评论

支持 Markdown