Skip to content

抖动错误

表单验证失败时输入框快速水平抖动,配合红色边框提示,直观传达错误状态。通过 CSS class 切换触发。

实时预览

⚠️ 请输入有效的邮箱地址

代码

css
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-6px); }
  20%, 40%, 60%, 80% { transform: translateX(6px); }
}

.form-input {
  padding: 14px 18px;
  border: 2px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  outline: none;
  transition: border-color 0.3s ease;
}

.form-input.error {
  border-color: #ef4444;
  animation: shake 0.5s ease;
}

.error-msg {
  color: #ef4444;
  font-size: 12px;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.form-input.error ~ .error-msg {
  opacity: 1;
}
html
<div class="form-group">
  <input class="form-input" type="email" placeholder="your@email.com" />
  <span class="error-msg">请输入有效的邮箱地址</span>
</div>

纯 CSS 实现的抖动错误表单动画效果——通过伪类选择器(:focus:checked)和过渡动画让表单元素具有交互反馈。无需 JS 即可实现聚焦发光、开关切换、浮动标签等效果。

快速使用

  1. 复制 CSS 代码到你的样式文件中
  2. 将 HTML 表单结构粘贴到页面中(注意 checkbox/radio 的 id-label 对应关系)
  3. 调整颜色和尺寸以匹配你的表单设计
  4. 配合 :valid/:invalid 伪类添加表单校验的视觉反馈

使用场景

  • 登录/注册表单:聚焦发光效果让用户知道当前正在输入的字段
  • 设置页面:开关切换和复选框动画让配置操作更直观
  • 搜索框:下划线增长或聚焦扩展动画引导用户输入
  • 错误提示:抖动动画+红色边框给校验失败的字段明确反馈

常见问题

Q: 纯 CSS 表单动画需要 JS 做校验吗? A: CSS 负责视觉反馈,JS 负责逻辑校验。推荐配合使用:CSS 处理 :valid / :invalid 伪类的样式变化和过渡动画,JS 负责自定义校验规则和提交拦截。

Q: 浮动标签的兼容性如何? A: :placeholder-shown 伪类 IE 不支持,但所有现代浏览器都支持。IE 降级方案:让标签始终在输入框上方,放弃浮动动画。或使用 :focus-within(同样不支持 IE)。

Q: 开关切换和复选框动画支持键盘操作吗? A: 用 <label> 包裹的 checkbox/toggle 天然支持键盘操作(Tab 聚焦 + Space 切换)。配合 :focus-visible 伪类添加焦点环样式,满足无障碍要求。

浏览器兼容性

浏览器兼容性
Chrome / Edge✅ 完全支持
Firefox✅ 完全支持
Safari✅ 完全支持
移动端浏览器✅ 完全支持
IE 11⚠️ :focus-within / :placeholder-shown 不支持

使用说明

属性说明
@keyframes shake左右交替位移,5次摆动
animation: shake 0.5s快速抖动,0.5s 完成
.error class添加此类触发抖动和红色边框
border-color错误时变为红色 #ef4444
translateX(±6px)抖动幅度为 6px

提示: 需要重复触发时,先移除 .error class,用 offsetWidth 强制重绘后再重新添加。JS 示例:el.classList.remove('error'); void el.offsetWidth; el.classList.add('error');