ZxdNoob
首页文章简历版本历史AI 向导

ZxdNoob

用心记录,认真生活

按 ⌘K 快速导航到任意页面按 ⌘I 打开 AI 向导(或访问 /agent)

导航

  • 首页
  • 简历
  • 版本历史
  • AI 向导

更多

  • GitHub
  • Sitemap

© 2026 ZxdNoob. All rights reserved.

Built with Next.js · Styled with Tailwind CSS

返回文章列表
2026年3月30日 04:30:001 分钟阅读

TailwindCSS 路线 04:表单与状态——输入框、校验、禁用、加载一套打完

真实业务离不开表单。用 Tailwind 把 Input/Select/Textarea/Checkbox 的默认、focus、error、disabled、dark 状态一次做成可复用规范。

  • TailwindCSS
  • 表单
  • 组件设计
  • 实战
AI 共读让 Noob 帮你提炼要点 / 答疑

这篇要做的事情很具体:把表单组件做成“团队可复用的标准件”。

你会发现表单之所以难,不是因为样式难,而是因为状态太多:

  • 默认 / hover / focus
  • error(校验失败)
  • disabled(禁用)
  • loading(提交中)
  • dark(暗色)

01 目标与验收#

目标:做出一套 Input 体系(至少包含 Input + Label + HelpText + ErrorText)。

验收:

  • focus 有清晰可访问的 focus ring
  • error 状态不仅变红,还能通过文案说明问题
  • disabled 不可点击、颜色更淡、光标正确
  • dark 模式下对比度仍然足够

02 一套“可落地”的表单 Token#

你可以沿用全站变量(推荐):

  • --border:默认边框
  • --focus-ring:聚焦外圈(建议用半透明 accent)
  • --surface:输入框底色
  • --accent:强调色

error 建议固定为红系(不要每个组件自选):

  • 边框:border-rose-500/70
  • 文案:text-rose-600(暗色用 text-rose-300)

03 Input 的基类(建议作为“规范”)#

下面这套 class 你可以直接拿去当作 Input 的 base:

const inputBase =
  "w-full rounded-2xl border bg-[var(--surface)] px-4 py-3 text-sm " +
  "text-stone-900 placeholder:text-stone-400 " +
  "transition-colors " +
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-[var(--focus-ring)] " +
  "disabled:cursor-not-allowed disabled:opacity-60 " +
  "dark:text-stone-100 dark:placeholder:text-stone-500";

然后把边框与 error 分开:

const inputBorder = "border-[var(--border)]/80 hover:border-[var(--border)]";
const inputError =
  "border-rose-500/70 hover:border-rose-500 focus-visible:ring-rose-500/20";

04 练习:做一个“登录表单”#

做一个最常见的登录:

  • 邮箱
  • 密码
  • 记住我(checkbox)
  • 提交按钮(loading)

要求:

  • error 时输入框和提示文案一致
  • 提交中按钮禁用且显示 loading
  • 键盘 Tab 顺序正确
  • label 用 <label htmlFor> 关联 input(可访问性)

05 小结#

表单组件做得好,后面写业务页面会非常快,因为你只是在“拼装标准件”。下一篇我们解决长文排版:当你的内容是 Markdown、文档、说明页时,Tailwind + Typography 插件怎么用最舒服。

相关阅读

基于内容相似度 + 标签/系列加权

  • 2026年3月29日 13:52:041 分钟TailwindCSS 从入门到精通(学习与实战路线)
    01

    TailwindCSS 路线 03:组件模式——从“堆 class”到可维护的 UI 组件

    你不需要 CSS-in-JS 才能组件化。用 Button/Badge/Card/Popover 4 个高频组件建立可维护的 Tailwind 组件模式。

    • TailwindCSS
    • 组件设计
    • 实战
  • 2026年3月29日 12:10:133 分钟TailwindCSS 从入门到精通(学习与实战路线)
    02

    TailwindCSS 路线 01:从 0 到可交付的工程化工作流

    不讲概念堆砌:用 Tailwind v4 在真实项目里把「样式入口、暗色模式、设计 Token、组件落地」一次搭顺。

    • TailwindCSS
    • 前端工程化
    • 实战
  • 2026年3月30日 15:30:001 分钟TailwindCSS 从入门到精通(学习与实战路线)
    03

    TailwindCSS 路线 08:可访问性(A11y)——Focus、对比度与语义结构

    Tailwind 不会自动让你可访问。把 focus-visible、aria、对比度、键盘可用性变成组件契约,让 UI 更可靠、更专业。

    • TailwindCSS
    • A11y
    • 可访问性
  • 2026年3月30日 10:30:001 分钟TailwindCSS 从入门到精通(学习与实战路线)
    04

    TailwindCSS 路线 06:动效与交互反馈——让 UI 有“质感”但不油腻

    动效不是炫技。用 transition、active scale、hover shadow、motion-reduce 让交互有质感,同时照顾减少动态效果的用户偏好。

    • TailwindCSS
    • 动效
    • 交互
返回文章列表

目录

5
  1. 01 目标与验收
  2. 02 一套“可落地”的表单 Token
  3. 03 Input 的基类(建议作为“规范”)
  4. 04 练习:做一个“登录表单”
  5. 05 小结
进入沉浸式阅读