Components
- 手风琴
- 提示
- 警告对话框
- 宽高比
- 头像
- 徽章
- 面包屑导航
- 按钮
- 按钮组
- 日历 Calendar
- 卡片
- Carousel
- 图表 Chart
- 复选框
- 折叠面板
- 组合框
- 命令
- 上下文菜单
- 数据表格 Data Table
- 日期选择器 Date Picker
- 对话框 Dialog
- 抽屉
- 下拉菜单
- Empty
- 字段
- 悬停卡片
- 输入
- 输入组
- 输入 OTP
- 项目
- Kbd
- 标签
- 菜单栏
- 原生选择框
- 导航菜单 Navigation Menu
- 分页
- 弹出框
- 进度 Progress
- 单选框组
- 可调整大小
- 滚动区域 Scroll Area
- 选择框
- 分隔符 Separator
- 侧边栏 Sheet
- 侧边栏 Sidebar
- 骨架屏
- 滑块
- Sonner
- 加载指示器 Spinner
- 开关
- 表格
- 标签页 Tabs
- 文本域
- 吐司
- 切换按钮 Toggle
- 切换组
- 提示 Tooltip
- 排版
import { Button } from "@/components/ui/button"
import { ArrowUpIcon } from "lucide-react"
安装
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 文件中:
@layer base {
button:not(:disabled),
[role="button"]:not(:disabled) {
cursor: pointer;
}
}示例
大小
使用 size 属性更改按钮大小。
import { Button } from "@/components/ui/button"
import { ArrowUpRightIcon } from "lucide-react"
默认
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 { Button } from "@/components/ui/button"
import { CircleFadingArrowUpIcon } from "lucide-react"
带图标
记得给图标添加 data-icon="inline-start" 或 data-icon="inline-end" 属性,以确保间距正确。
import { Button } from "@/components/ui/button"
import { IconGitBranch } from "@tabler/icons-react"
圆角
使用 rounded-full 类使按钮变成圆形。
import { Button } from "@/components/ui/button"
import { ArrowUpIcon } from "lucide-react"
加载中动画
在按钮内部渲染 <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"
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 |