@chakra_ui
CU

Chakra UI
构建现代 Web 应用程序最强大的工具包。
250 万次下载
import {
Avatar,
HStack,
HoverCard,
Icon,
Link,
Portal,
Stack,
Text,
} from "@chakra-ui/react"
import { LuChartLine } from "react-icons/lu"
const Demo = () => {
return (
<HoverCard.Root size="sm">
<HoverCard.Trigger asChild>
<Link href="#">@chakra_ui</Link>
</HoverCard.Trigger>
<Portal>
<HoverCard.Positioner>
<HoverCard.Content>
<HoverCard.Arrow />
<Stack gap="4" direction="row">
<Avatar.Root>
<Avatar.Image src="https://pbs.twimg.com/profile_images/1244925541448286208/rzylUjaf_400x400.jpg" />
<Avatar.Fallback name="Chakra UI" />
</Avatar.Root>
<Stack gap="3">
<Stack gap="1">
<Text textStyle="sm" fontWeight="semibold">
Chakra UI
</Text>
<Text textStyle="sm" color="fg.muted">
The most powerful toolkit for building modern web
applications.
</Text>
</Stack>
<HStack color="fg.subtle">
<Icon size="sm">
<LuChartLine />
</Icon>
<Text textStyle="xs">2.5M Downloads</Text>
</HStack>
</Stack>
</Stack>
</HoverCard.Content>
</HoverCard.Positioner>
</Portal>
</HoverCard.Root>
)
}
用法
import { HoverCard } from "@chakra-ui/react"
<HoverCard.Root>
<HoverCard.Trigger />
<HoverCard.Positioner>
<HoverCard.Content>
<HoverCard.Arrow>
<HoverCard.ArrowTip />
</HoverCard.Arrow>
</HoverCard.Content>
</HoverCard.Positioner>
</HoverCard.Root>
快捷方式
HoverCard
提供常用场景的快捷方式。
箭头
HoverCard.Arrow
默认在其内部渲染 HoverCard.ArrowTip
组件。
这样可行
<HoverCard.Arrow>
<HoverCard.ArrowTip />
</HoverCard.Arrow>
如果您不需要自定义箭头提示,这可能更简洁。
<HoverCard.Arrow />
示例
受控
使用 open
和 onOpenChange
属性来控制悬停卡片的可见性。
@chakra_ui
Chakra 是一个梵语词,意为“圆盘”或“轮”,指代身体中的能量中心。
"use client"
import { Box, HoverCard, Link, Portal, Strong } from "@chakra-ui/react"
import { useState } from "react"
const Demo = () => {
const [open, setOpen] = useState(false)
return (
<HoverCard.Root size="sm" open={open} onOpenChange={(e) => setOpen(e.open)}>
<HoverCard.Trigger asChild>
<Link href="#">@chakra_ui</Link>
</HoverCard.Trigger>
<Portal>
<HoverCard.Positioner>
<HoverCard.Content maxWidth="240px">
<HoverCard.Arrow />
<Box>
<Strong>Chakra</Strong> is a Sanskrit word that means disk or
wheel, referring to energy centers in the body
</Box>
</HoverCard.Content>
</HoverCard.Positioner>
</Portal>
</HoverCard.Root>
)
}
延迟
使用 openDelay
和 closeDelay
属性控制打开和关闭的延迟。
@chakra_ui
Chakra 是一个梵语词,意为“圆盘”或“轮”,指代身体中的能量中心。
import { Box, HoverCard, Link, Portal, Strong } from "@chakra-ui/react"
const Demo = () => {
return (
<HoverCard.Root size="sm" openDelay={1000} closeDelay={100}>
<HoverCard.Trigger asChild>
<Link href="#">@chakra_ui</Link>
</HoverCard.Trigger>
<Portal>
<HoverCard.Positioner>
<HoverCard.Content maxWidth="240px">
<HoverCard.Arrow />
<Box>
<Strong>Chakra</Strong> is a Sanskrit word that means disk or
wheel, referring to energy centers in the body
</Box>
</HoverCard.Content>
</HoverCard.Positioner>
</Portal>
</HoverCard.Root>
)
}
定位
使用 positioning.placement
属性配置底层的 floating-ui
定位逻辑。
@chakra_ui
Chakra 是一个梵语词,意为“圆盘”或“轮”,指代身体中的能量中心。
import { Box, HoverCard, Link, Portal, Strong } from "@chakra-ui/react"
const Demo = () => {
return (
<HoverCard.Root size="sm" positioning={{ placement: "top" }}>
<HoverCard.Trigger asChild>
<Link href="#">@chakra_ui</Link>
</HoverCard.Trigger>
<Portal>
<HoverCard.Positioner>
<HoverCard.Content maxWidth="240px">
<HoverCard.Arrow />
<Box>
<Strong>Chakra</Strong> is a Sanskrit word that means disk or
wheel, referring to energy centers in the body
</Box>
</HoverCard.Content>
</HoverCard.Positioner>
</Portal>
</HoverCard.Root>
)
}
在对话框内
要在 Dialog
中使用 HoverCard
,您需要避免将 HoverCard.Positioner
门户到文档的 body
中。
-<Portal>
<HoverCard.Positioner>
<HoverCard.Content>
{/* ... */}
</HoverCard.Content>
</HoverCard.Positioner>
-</Portal>
无障碍性
悬停卡片仅应用于显示非理解上下文所必需的补充信息。
它无法被屏幕阅读器访问,也无法通过键盘激活,因此请避免在其内部放置关键内容。
属性
属性 | 默认值 | 类型 |
---|---|---|
closeDelay | '300' | 数字 鼠标离开触发器或内容后,悬停卡片关闭的持续时间。 |
lazyMount | 否 | 布尔值 是否启用懒加载挂载 |
openDelay | '700' | 数字 鼠标进入触发器后,悬停卡片打开的持续时间。 |
unmountOnExit | 否 | 布尔值 是否在退出时卸载。 |
colorPalette | 'gray' | '灰色' | '红色' | '橙色' | '黄色' | '绿色' | '青色' | '蓝色' | '湖蓝色' | '紫色' | '粉色' 组件的颜色调色板 |
size | 'md' | 'xs' | 'sm' | 'md' | 'lg' 组件的尺寸 |
defaultOpen | 布尔值 悬停卡片首次渲染时的初始打开状态。当您不需要控制其打开状态时使用。 | |
id | 字符串 机器的唯一标识符。 | |
ids | Partial<{ trigger: string content: string positioner: string arrow: string }> 弹出框中元素的 ID。有助于组合。 | |
immediate | 布尔值 是否立即同步当前变化,或将其推迟到下一帧 | |
onExitComplete | () => void 当动画在关闭状态结束时调用的函数 | |
onOpenChange | (details: OpenChangeDetails) => void 当悬停卡片打开或关闭时调用的函数。 | |
open | 布尔值 悬停卡片是否打开 | |
positioning | PositioningOptions 用户提供的用于定位弹出框内容的选项 | |
present | 布尔值 节点是否存在(由用户控制) | |
as | React.ElementType 要渲染的底层元素。 | |
asChild | ||
unstyled | 布尔值 是否移除组件的样式。 |