通过CSS伪类:invalid和:valid实现表单实时验证,结合颜色、边框、图标与transition动画,使用--error-color和--valid-color变量区分状态,配合:not(:placeholder-shown)避免占位符干扰,利用.form-group与:has()控制错误信息显示,内联SVG图标提升可读性,最终无需JavaScript即完成友好验证交互。
:invalid 伪类提升表单验证体验通过 CSS 的 :invalid 和 :valid 伪类,可以在用户输入时实时提供视觉反馈,无需 JavaScript 即可实现基础验证提示。关键在于结合颜色、边框、背景和图标,让用户快速识别错误。
使用醒目的颜色突出无效输入:
初始空值不应显示为“错误”。使用 :not(:placeholder-shown) 可防止占位符存在时触发错误样式:
input:invalid:not(:placeholder-shown) { ... }这样用户首次进入表单时不会被红色边框吓到,只有在输入后内容不合法才会提示。利用父容器和 :has() 选择器控制错误消息显示:
.form-group 中.form-group:has(input:invalid) 控制错误消息显隐在输入框右侧嵌入小图标,进一步强化状态识别:
基本上就这些。合理运用伪类和视觉元素,能让表单验证更直观友好。