CSS表单生成器
表单是大多数网站中最常被用户交互的部分,同时也是许多网站中最缺乏视觉优化的部分。该生成器输出完整样式化表单的CSS:响应式表单网格、标签与输入框组合、文本区域、选择器以及醒目的焦点状态,整体保持统一的视觉风格。设置强调色、圆角半径和间距,然后复制样式表。CSS完整保留原生表单的语义特性,因此验证机制、键盘操作及屏幕阅读器均能正常工作。
如何使用生成器
-
1
设置强调色
强调色决定每个字段的焦点环和边框颜色。
-
2
选择圆角半径
半径适用于输入框、文本区域和选择器,使所有字段形状统一。
-
3
设置间距
间距控制表单网格中各字段之间的垂直距离。
-
4
复制CSS
一套完整的样式表,可直接粘贴和调整,无需改动你的HTML。
基础表单
<form class="form">
<label class="field">
<span class="field-label">Email</span>
<input type="email" required>
<span class="field-error">Please enter a valid email.</span>
</label>
<label class="field">
<span class="field-label">Password</span>
<input type="password" minlength="8" required>
</label>
<button type="submit" class="button">Sign up</button>
</form>
.field {
display: block;
margin-bottom: 1.25rem;
}
.field-label {
display: block;
font-weight: 500;
margin-bottom: .25rem;
}
.field input {
width: 100%;
padding: .5rem .75rem;
font: inherit;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }
四种常见风格
| 样式 | 说明 | 最适合用于 |
|---|---|---|
| 描边式 | 输入框周围有边框,背景透明 | 桌面端表单,布局紧凑的场景 |
| 下划线式 | 仅底部边框 | 极简/编辑类界面 |
| 填充式 | 灰色背景,无边框 | 受 Material Design 启发的界面 |
| 浮动标签 | 标签置于输入框内部,聚焦或输入内容时向上动画移动 | 移动优先设计、着陆页 |
浮动标签最为美观,但需要额外的标记或 JavaScript 代码来检测空状态;而描边式最为通用。
可访问性检查清单
- 每个输入项均需显示可见标签。切勿仅使用占位符作为标签,该标签在焦点状态下会消失,且无法形成清晰对比。
<label for>或包装用的<label>。两者均有效;使用包装版更为简便。- 焦点指示器。切勿在没有替代方案的情况下使用
outline: none。键盘用户需要它。 - 错误信息:通过输入端的
aria-describedby进行链接。切勿仅使用颜色标记错误,需同时添加文字提示或图标。 - 必填字段:需使用
required属性。为视力正常的用户在标签中添加视觉标记(星号)。 - 输入类型:可使用
type="email"、type="tel"、type="url"或type="number";移动键盘可适配相应输入方式。 autocomplete属性:autocomplete="email"、autocomplete="current-password"等。可大幅节省用户的输入时间。
原生验证状态
CSS为表单有效性提供了伪类:
:required/:optional:valid/:invalid:in-range/:out-of-range(适用于带有最小值/最大值的数值输入):placeholder-shown(为空,可见占位符):user-invalid(无效且用户已交互,适用于错误样式)
:user-invalid伪类是仅在用户执行操作后才显示错误信息的最简洁方式,避免了交互前出现红色边框。该功能于2023年左右在所有主流版本中获得支持。
禁用状态
.field input:disabled {
background: #f3f4f6;
color: #9ca3af;
cursor: not-allowed;
}
禁用的输入项无法聚焦或提交。如需使其适用于屏幕阅读器,请使用 readonly,该表单可提交数值,但用户无法编辑。
常见问题
不应该。占位符会在用户输入时立即消失,因此无法作为标签使用;此外,占位符文本通常对比度较低,无法满足 WCAG 标准。建议使用可见标签,并辅以可选的占位符来提供格式提示。
由于 :invalid 直接适用于空的必填字段,请使用 :user-invalid(支持交互功能);在旧版浏览器中可结合使用 :invalid:not(:placeholder-shown) 作为替代方案。
设置 appearance: none,移除默认箭头,并通过背景图像或使用伪元素箭头的环绕标签添加自定义箭头。内部选项列表保持系统默认样式,无法通过 CSS 进行自定义。
两者皆适用:HTML验证(required、type、pattern)适用于无需JavaScript处理的简单场景;而JavaScript则负责处理复杂规则(如密码强度验证、跨字段依赖关系)。务必同时执行服务器端验证,客户端验证主要关乎用户体验,而非安全性。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
电话号码验证器
根据各国号码规划检查结构,并显示地区、类型以及E.164、国际、国内和RFC 3966格式。
随机颜色生成器
生成 1 到 50 个随机 HEX 颜色,查看色块,复制代码,并用于 CSS、测试或配色探索。
BBCode 转 HTML 转换器
将 BBCode(论坛标记)转换为干净的 HTML。支持格式标签、列表、引用、代码、图片和链接。