按钮
本机按钮元素周围的轻量封装,可为鼠标悬停和焦点等内容提供更多见解型状态。
要开始使用,请通过 npm 安装 Headless UI
npm install @headlessui/react
按钮使用 Button
组件构建
import { Button } from '@headlessui/react'
function Example() {
return (
<Button className="rounded bg-sky-600 py-2 px-4 text-sm text-white data-[hover]:bg-sky-500 data-[active]:bg-sky-700">
Save changes
</Button>
)
}
可以将通常会传递给原生 button
元素的任何属性传递给 Button
。
Headless UI 跟踪每个组件大量状态,例如某个输入栏是否是焦点,某个弹出面板是否已打开或关闭,或某个菜单中的哪个项目当前为键盘焦点。
但是,由于这些组件是无头的,且开箱即用时完全无样式,因此在你为每个状态自己提供所需的样式之前,无法在 UI 中看到此信息。
设置 Headless UI 组件的不同状态最简单的方法就是使用每个组件公开的 data-*
属性。
例如,Button
组件公开了一个 data-hover
属性(用于指示鼠标当前是否悬停在该按钮上)和一个 data-active
属性(用于指示按钮当前是否处于按下状态)。
<!-- Rendered `Button` -->
<button type="button" data-hover data-active></button>
使用 CSS 属性选择器 根据这些数据属性的存在有条件地应用样式。如果你使用的是 Tailwind CSS,数据属性修改器 可轻松实现此目的。
import { Button } from '@headlessui/react'
function Example() {
return (
<Button className="rounded bg-sky-600 py-2 px-4 text-sm text-white data-[hover]:bg-sky-500 data-[hover]:data-[active]:bg-sky-700"> Save changes
</Button>
)
}
有关所有可用数据属性的列表,请参阅 组件 API。
每个组件还会通过 渲染属性 公开有关其当前状态的信息,你可以使用这些信息来有条件地应用不同样式或渲染不同内容。
例如,Button
组件公开了一个 hover
状态,用于指示鼠标当前是否悬停在该按钮上,以及一个 active
状态,用于指示按钮当前是否处于按下状态。
import { Button } from '@headlessui/react'
import clsx from 'clsx'
import { Fragment } from 'react'
function Example() {
return (
<Button as={Fragment}>
{({ hover, active }) => ( <button
className={clsx(
'rounded py-2 px-4 text-sm text-white',
!hover && !active && 'bg-sky-600', hover && !active && 'bg-sky-500', active && 'bg-sky-700' )}
>
Save changes
</button>
)} </Button>
)
}
有关所有可用渲染属性的列表,请参阅 组件 API。
向 Button
添加 disabled
属性可禁用它
import { Button } from '@headlessui/react'
function Example() {
return (
<Button
disabled className="rounded bg-sky-600 py-2 px-4 text-sm text-white data-[hover]:bg-sky-500 data-[active]:bg-sky-700 data-[disabled]:bg-gray-500"
>
Save changes
</Button>
)
}
原生 button
元素的薄包装器。
属性 | 默认值 | 说明 |
as | button | 字符串 | 组件 它button应呈现为的元素或组件。 |
disabled | false | 布尔值 它button是否已禁用. |
autoFocus | false | 布尔值 它button在首次呈现时 |
type | button | 字符串 按钮类型。 |
数据属性 | 渲染属性 | 说明 |
data-disabled | disabled |
它button已禁用。 |
data-focus | focus |
它button已聚焦。 |
data-hover | hover |
它button已悬停。 |
data-active | active |
它button处于活动状态或已按下。 |
data-autofocus | autofocus |
|
如果你有兴趣获取预先设计的 Tailwind CSS 按钮组件示例,请查看 Tailwind UI — 由我们构建的一系列设计精美且精工细作的组件。
这是支持我们为诸如此类的开源项目开展工作的好方法,并且它使我们能够改进这些项目并确保这些项目得到良好的维护。