使用高级 Chakra UI 组件,更快地进行开发 💎

了解更多
跳过到内容
文档演练场指南博客
赞助

气泡卡片

用于在弹出框中显示详细信息

源码Storybook用法示例Ark

用法

import { Popover } from "@chakra-ui/react"
<Popover.Root>
  <Popover.Trigger />
  <Popover.Positioner>
    <Popover.Content>
      <Popover.CloseTrigger />
      <Popover.Arrow>
        <Popover.ArrowTip />
      </Popover.Arrow>
      <Popover.Body>
        <Popover.Title />
      </Popover.Body>
    </Popover.Content>
  </Popover.Positioner>
</Popover.Root>

快捷方式

Popover 为常见用例提供了快捷方式。

箭头

Popover.Arrow 默认在其中渲染 Popover.ArrowTip 组件。

这可行

<Popover.Arrow>
  <Popover.ArrowTip />
</Popover.Arrow>

如果您不需要自定义箭头提示,这可能更简洁。

<Popover.Arrow />

示例

受控

使用 openonOpenChange 来控制气泡卡片的可见性。

尺寸

使用 size 属性来改变气泡卡片组件的尺寸。

延迟挂载

使用 lazyMounted 和/或 unmountOnExit 属性来延迟挂载气泡卡片内容,直到其被打开。

定位

使用 positioning.placement 属性来配置底层的 floating-ui 定位逻辑。

偏移

使用 positioning.offset 属性来调整气泡卡片内容的位置。

等宽

使用 positioning.sameWidth 属性使气泡卡片内容与触发器等宽。

嵌套气泡卡片

当在气泡卡片内部嵌套气泡卡片、选择框、菜单等叠加元素时,请将它们的 portalled 属性设置为 false

这是一个嵌套气泡卡片的示例。

初始焦点

使用 initialFocusEl 属性来设置气泡卡片内容的初始焦点。

表单

这是一个内部包含表单的气泡卡片示例。

自定义背景

使用 --popover-bg CSS 变量来改变气泡卡片内容及其箭头的背景颜色。

在对话框内

要在 Dialog 中使用 Popover,您需要避免将 Popover.Positioner 传送到文档的 body 中。

-<Portal>
  <Popover.Positioner>
    <Popover.Content>
      {/* ... */}
    </Popover.Content>
  </Popover.Positioner>
-</Portal>

属性

属性默认值类型
autoFocus true
boolean

打开气泡卡片时,是否自动将焦点设置在气泡卡片内的第一个可聚焦内容上。

closeOnEscape true
boolean

按下 Esc 键时是否关闭气泡卡片。

closeOnInteractOutside true
boolean

当用户点击气泡卡片外部时是否关闭气泡卡片。

lazyMount false
boolean

是否启用延迟挂载

modal false
boolean

气泡卡片是否应为模态。当设置为 `true` 时: - 与外部元素的交互将被禁用 - 只有气泡卡片内容对屏幕阅读器可见 - 滚动被阻止 - 焦点被限制在气泡卡片内

portalled true
boolean

气泡卡片是否被传送。这将代理制表符行为,无论气泡卡片内容的 DOM 位置如何。

unmountOnExit false
boolean

退出时是否卸载。

colorPalette 'gray'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'

组件的调色板

size 'md'
'xs' | 'sm' | 'md' | 'lg'

组件的尺寸

defaultOpen
boolean

气泡卡片首次渲染时的初始打开状态。当您不需要控制其打开状态时使用。

id
string

机器的唯一标识符。

ids
Partial<{ anchor: string trigger: string content: string title: string description: string closeTrigger: string positioner: string arrow: string }>

气泡卡片中元素的 ID。对于组合非常有用。

immediate
boolean

是否立即同步当前更改或将其推迟到下一帧

initialFocusEl
() => HTMLElement | null

气泡卡片打开时要聚焦的元素。

onEscapeKeyDown
(event: KeyboardEvent) => void

按下 Esc 键时调用的函数

onExitComplete
() => void

动画在关闭状态下结束时调用的函数

onFocusOutside
(event: FocusOutsideEvent) => void

焦点移出组件时调用的函数

onInteractOutside
(event: InteractOutsideEvent) => void

组件外部发生交互时调用的函数

onOpenChange
(details: OpenChangeDetails) => void

气泡卡片打开或关闭时调用的函数

onPointerDownOutside
(event: PointerDownOutsideEvent) => void

指针在组件外部按下时调用的函数

open
boolean

气泡卡片是否打开

persistentElements
(() => Element | null)[]

返回持续存在的元素,这些元素: - 不应禁用指针事件 - 不应触发关闭事件

positioning
PositioningOptions

用户提供的用于定位气泡卡片内容的选项

present
boolean

节点是否存在(由用户控制)

as
React.ElementType

要渲染的底层元素。

asChild
boolean

使用提供的子元素作为默认渲染元素,结合它们的属性和行为。

更多详情,请阅读我们的 组合 指南。
unstyled
boolean

是否移除组件的样式。

上一页

PIN 输入框

下一页

环形进度条