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月29日 13:52:041 分钟阅读

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

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

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

写 Tailwind 最容易踩的坑:把所有样式都写进一个组件里,然后再也不敢改。

这篇用 4 个组件,给你一套“从小到大”的抽象路径:先交付、再抽常量、再抽组件、最后才做变体系统。

01 组件抽象的顺序(非常重要)#

推荐顺序:

  1. 先把 UI 写对(可以长)
  2. 把重复的 class 抽成常量(仍在同文件)
  3. 把可复用组件抽出来(src/components)
  4. 最后才考虑变体系统(比如 size/variant)

02 Button:主/次/幽灵三件套#

实战里你至少需要:

  • primary:主操作(高对比)
  • secondary:次要操作(边框/浅底)
  • ghost:工具栏/轻操作(文字按钮)

并且要考虑:

  • disabled 状态(视觉 + 交互)
  • loading 状态(防止重复提交)
  • size(紧凑/常规)

思路示例(不强制照抄,重点是结构):

const base =
  "inline-flex items-center justify-center rounded-full font-semibold transition-all active:scale-[0.98]";

const variants = {
  primary:
    "bg-stone-900 text-white hover:bg-stone-800 dark:bg-stone-50 dark:text-stone-900 dark:hover:bg-stone-200",
  secondary:
    "border border-[var(--border)] bg-[var(--surface)] text-stone-900 hover:bg-[var(--surface)]/70 dark:text-stone-50",
  ghost:
    "text-stone-600 hover:bg-stone-100 hover:text-stone-900 dark:text-stone-400 dark:hover:bg-stone-800 dark:hover:text-stone-100",
};

关键点:变体是字符串,不是魔法。先让团队能读懂。

03 Badge:统一“标签”的视觉语言#

Badge 的目标是:全站标签都长一个样。

建议约定:

  • 背景:浅色用 stone-100,深色用 stone-800
  • 字号:text-[11px] 或 text-xs
  • 圆角:rounded-full

04 Card:交互一致比“好看”更重要#

Card 的真正价值是:hover/边框/阴影的反馈一致。

你现在项目里的 PostCard 已经是非常实用的 Card 模板:透明边框 → hover 出现边框与轻底色。

05 Popover/Modal:Tailwind 管样式,交互用朴素实现#

Tailwind 不解决可访问性与交互逻辑。实战里你可以先用最朴素的方案:

  • fixed 盖层
  • backdrop-blur 玻璃质感
  • Esc 关闭
  • 点击外部关闭

项目里的主题切换弹层就是这个思路,简单耐用。

06 小结#

Tailwind 的组件化不是把 class 变短,而是把视觉语言固定、交互反馈一致化、改动范围可控。下一篇我们会做更偏“业务”的实战:表单(输入框、校验提示、按钮组)如何一口气落地成可复用规范。

相关阅读

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

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

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

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

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

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

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

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

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

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

    • TailwindCSS
    • 动效
    • 交互
  • 2026年3月29日 13:00:212 分钟TailwindCSS 从入门到精通(学习与实战路线)
    04

    TailwindCSS 路线 02:布局与响应式——把断点策略写成“团队规范”

    响应式不是到处加 sm/md/lg。用列表/详情/双栏 3 种页面模板把断点策略固化成可复用的写法。

    • TailwindCSS
    • 响应式
    • 实战
返回文章列表

目录

6
  1. 01 组件抽象的顺序(非常重要)
  2. 02 Button:主/次/幽灵三件套
  3. 03 Badge:统一“标签”的视觉语言
  4. 04 Card:交互一致比“好看”更重要
  5. 05 Popover/Modal:Tailwind 管样式,交互用朴素实现
  6. 06 小结
进入沉浸式阅读