Components
@shadcn/react
@shadcn/helpers
Utilities
import { ArrowUpIcon } from "lucide-react"
import { Button } from "@/components/ui/button"安装#
pnpm dlx shadcn@latest add button
使用方法#
import { Button } from "@/components/ui/button"<Button variant="outline">按钮</Button>鼠标指针#
Tailwind v4 已切换按钮组件的样式,从 cursor: pointer 变为 cursor: default。
如果你想保持 cursor: pointer 的行为,请将以下代码添加到你的 CSS 文件中:
你也可以在项目设置期间通过 npx shadcn@latest init --pointer 启用此功能。
@layer base {
button:not(:disabled),
[role="button"]:not(:disabled) {
cursor: pointer;
}
}尺寸#
使用 size 属性更改按钮大小。
import { ArrowUpRightIcon } from "lucide-react"
import { Button } from "@/components/ui/button"默认#
import { Button } from "@/components/ui/button"
export function ButtonDefault() {概述#
import { Button } from "@/components/ui/button"
export function ButtonOutline() {次要#
import { Button } from "@/components/ui/button"
export function ButtonSecondary() {幽灵#
import { Button } from "@/components/ui/button"
export function ButtonGhost() {危险#
import { Button } from "@/components/ui/button"
export function ButtonDestructive() {链接#
import { Button } from "@/components/ui/button"
export function ButtonLink() {图标#
import { CircleFadingArrowUpIcon } from "lucide-react"
import { Button } from "@/components/ui/button"带图标#
记得给图标添加 data-icon="inline-start" 或 data-icon="inline-end" 属性,以确保间距正确。
import { IconGitBranch } from "@tabler/icons-react"
import { Button } from "@/components/ui/button"圆形#
使用 rounded-full 类使按钮变成圆形。
import { ArrowUpIcon } from "lucide-react"
import { Button } from "@/components/ui/button"Spinner#
在按钮内部渲染 <Spinner /> 组件以显示加载状态。记得给 spinner 添加 data-icon="inline-start" 或 data-icon="inline-end" 属性,以保证间距正确。
import { Button } from "@/components/ui/button"
import { Spinner } from "@/components/ui/spinner"
按钮组#
要创建按钮组,请使用 ButtonGroup 组件。详见按钮组文档。
"use client"
import * as React from "react"作为子元素#
你可以给 <Button /> 添加 asChild 属性,使其他组件看起来像按钮。下面是一个看起来像按钮的链接示例。
import Link from "next/link"
import { Button } from "@/components/ui/button"RTL#
要在 shadcn/ui 中启用 RTL(从右到左)支持,请参见RTL 配置指南。
"use client"
import { ArrowRightIcon, PlusIcon } from "lucide-react"API 参考#
Button#
Button 组件是对 button 元素的封装,添加了多种样式和功能。
| 属性 | 类型 | 默认值 |
|---|---|---|
variant | "default" | "outline" | "ghost" | "destructive" | "secondary" | "link" | "default" |
size | "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | "default" |
asChild | boolean | false |