tailwindlabs/headlessui
Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.
tailwindlabs/headlessui
Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.
Headless UI 是由 Tailwind Labs 维护的无样式(headless)UI 组件库,提供 React(@headlessui/react)与 Vue(@headlessui/vue)两套实现。组件只负责焦点管理、键盘导航、ARIA 属性与开关状态等交互逻辑,不附带任何预设 CSS,便于你用 Tailwind CSS 或自有设计系统完全定制外观。完整文档与示例见 headlessui.com;本仓库为 monorepo 源码,日常集成通过 npm 安装对应包即可。
aria-* 属性,降低 a11y 实现成本data-* 属性(如 data-open、data-focus)与 render props 暴露 active/focus/selected 等状态,配合 Tailwind 的 data-* 修饰符即可写条件样式@headlessui/react 与 @headlessui/vue,便于跨框架团队复用设计模式@headlessui/tailwindcss 插件;文档示例默认以 Tailwind class 演示,和 Tailwind CSS 工作流天然衔接自建 Dropdown、Modal、Combobox 等交互组件时,焦点顺序、屏幕阅读器语义与键盘行为往往占大量调试时间。Headless UI 把这些易错细节封装在组件内部,你只需关心 markup 结构与视觉样式,原型到生产的交互一致性更高。相比直接套用带皮肤的全量 UI 库,headless 方案在品牌定制与 design token 统一上更灵活;相比从零手写,可显著缩短 a11y 合规与跨浏览器行为对齐的周期。若项目已采用 Tailwind CSS,Headless UI 是同一团队出品、文档与示例风格一致的互补选择。
React
npm install @headlessui/react@latestVue
npm install @headlessui/vue@latest可选:配合 Tailwind 使用 @headlessui/tailwindcss 插件(见 官方文档 中 Tailwind 集成说明)。
开发版(跟踪 main 分支,不遵循 semver):
npm install @headlessui/react@insiders# 或npm install @headlessui/vue@insiders以 Dropdown Menu 为例(React):
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'
function Example() { return ( <Menu> <MenuButton>My account</MenuButton> <MenuItems anchor="bottom"> <MenuItem> <a className="block data-focus:bg-blue-100" href="/settings"> Settings </a> </MenuItem> </MenuItems> </Menu> )}Dialog、Tabs、Combobox 等组件的完整 API 与 Vue 写法见 headlessui.com/react 与 headlessui.com/vue。
onClose。aria-expanded、role 等属性。@headlessui/react 或 @headlessui/vue 即可;clone 本 monorepo 用于贡献或调试 insiders 构建,见 Contributing。MenuItem、DialogPanel 等节点添加 class 或 CSS;文档依赖 Tailwind 的 data-focus:、data-open: 等修饰符。open 与 onClose;未正确处理会导致 Esc 或点击外部无法关闭。@insiders 标签指向 main 最新提交,API 可能在正式发布前变动,生产环境请使用 @latest 稳定版。@import "tailwindcss" 与 v3 配置路径不同,集成 Headless UI 时请对照各自官方文档,避免 content 扫描或插件注册遗漏。