使用高级 Chakra UI 组件更快地构建 💎

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

工具提示

用于当用户悬停在元素上时显示附加信息。

源码Storybook配方Ark

设置

为方便使用,为Tooltip 组件创建封闭组件组合。

import { Tooltip as ChakraTooltip, Portal } from "@chakra-ui/react"
import * as React from "react"

export interface TooltipProps extends ChakraTooltip.RootProps {
  showArrow?: boolean
  portalled?: boolean
  portalRef?: React.RefObject<HTMLElement>
  content: React.ReactNode
  contentProps?: ChakraTooltip.ContentProps
  disabled?: boolean
}

export const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
  function Tooltip(props, ref) {
    const {
      showArrow,
      children,
      disabled,
      portalled = true,
      content,
      contentProps,
      portalRef,
      ...rest
    } = props

    if (disabled) return children

    return (
      <ChakraTooltip.Root {...rest}>
        <ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>
        <Portal disabled={!portalled} container={portalRef}>
          <ChakraTooltip.Positioner>
            <ChakraTooltip.Content ref={ref} {...contentProps}>
              {showArrow && (
                <ChakraTooltip.Arrow>
                  <ChakraTooltip.ArrowTip />
                </ChakraTooltip.Arrow>
              )}
              {content}
            </ChakraTooltip.Content>
          </ChakraTooltip.Positioner>
        </Portal>
      </ChakraTooltip.Root>
    )
  },
)

另外,您可以使用以下命令将其添加到项目中。

npx @chakra-ui/cli snippet add tooltip

用法

import { Tooltip } from "@/components/ui/tooltip"
<Tooltip content="...">
  <button />
</Tooltip>

示例

箭头

使用 showArrow 属性在工具提示上显示箭头。

位置

使用 positioning.placement 属性更改工具提示的位置。

偏移

使用 positioning.offset 属性更改工具提示的偏移量。

延迟

使用 openDelaycloseDelay 属性更改工具提示的延迟。

自定义背景

使用 --tooltip-bg CSS 变量更改工具提示的背景颜色。

受控

使用 openonOpenChange 属性控制工具提示的可见性。

存储

控制工具提示的另一种方法是使用 RootProvider 组件和 useTooltip 存储钩子。

这样,您可以从工具提示外部访问工具提示状态和方法。

交互式

使用 interactive 属性在与工具提示内容交互时保持其打开状态。

禁用

使用 disabled 属性禁用工具提示。禁用时,工具提示将不会显示。

带头像

这是一个如何将 Tooltip 组件与 Avatar 组件一起使用的示例。

SA

带复选框

这是一个如何将 Tooltip 组件与 Checkbox 组件一起使用的示例。

带菜单项

这是一个如何将 TooltipMenuItem 组件一起使用的示例。

带菜单触发器

这是一个如何将 TooltipMenuTrigger 组件一起使用的示例。

带开关

这是一个如何将 Tooltip 包装在 Switch 组件周围的示例。

带选项卡

这是一个如何将 Tooltip 包装在 Tabs 组件周围的示例。

管理您的团队成员

属性

属性默认类型
closeDelay '500'
数字

工具提示的关闭延迟。

closeOnClick true
布尔值

点击时工具提示是否应该关闭

closeOnEscape true
布尔值

当按下 Esc 键时是否关闭工具提示。

closeOnPointerDown true
布尔值

在指针按下时是否关闭工具提示。

closeOnScroll true
布尔值

滚动时工具提示是否应该关闭

interactive false
布尔值

工具提示内容是否可交互。在此模式下,当用户悬停在内容上时,工具提示将保持打开状态。

lazyMount true
布尔值

是否启用惰性挂载

openDelay '1000'
数字

工具提示的打开延迟。

unmountOnExit true
布尔值

是否在退出时卸载。

aria-label
字符串

工具提示的自定义标签。

defaultOpen
布尔值

工具提示首次渲染时的初始打开状态。当您不需要控制其打开状态时使用。

disabled
布尔值

工具提示是否禁用

id
字符串

工具提示的 `id`。

ids
Partial<{ trigger: string content: string arrow: string positioner: string }>

工具提示中元素的 id。对组合有用。

immediate
布尔值

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

onExitComplete
() => void

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

onOpenChange
(details: OpenChangeDetails) => void

工具提示打开时调用的函数。

open
布尔值

工具提示是否打开

positioning
PositioningOptions

用户提供的用于定位弹出内容体的选项

present
布尔值

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

上一页

切换提示

下一页

仅客户端