You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Shadcn Tooltip组件的延迟显示时长?

如何修改Shadcn Tooltip组件的显示延迟时长

当然可以修改Shadcn Tooltip的弹出延迟时长,它底层基于Radix UI的Tooltip组件,支持通过delayDuration属性控制悬停后到tooltip弹出的时间。

实现方案:

  • 直接使用Shadcn提供的Tooltip组件时,给<Tooltip>根组件传递delayDuration={100}属性即可:
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"

<TooltipProvider>
  <Tooltip delayDuration={100}>
    <TooltipTrigger>Hover me</TooltipTrigger>
    <TooltipContent>
      <p>自定义延迟的Tooltip内容</p>
    </TooltipContent>
  </Tooltip>
</TooltipProvider>
  • 如果你已将Tooltip组件代码复制到本地自定义维护,需确保本地组件将delayDuration属性透传给Radix UI的Tooltip.Root:
// 本地components/ui/tooltip.tsx
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
import { cn } from "@/lib/utils"

// 直接复用Radix的Root,它原生支持delayDuration属性
const Tooltip = TooltipPrimitive.Root

const TooltipTrigger = TooltipPrimitive.Trigger

const TooltipContent = React.forwardRef<
  React.ElementRef<typeof TooltipPrimitive.Content>,
  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
>(({ className, sideOffset = 4, ...props }, ref) => (
  <TooltipPrimitive.Content
    ref={ref}
    sideOffset={sideOffset}
    className={cn(
      "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
      className
    )}
    {...props}
  />
))
TooltipContent.displayName = TooltipPrimitive.Content.displayName

export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }

delayDuration的单位为毫秒,设置为100就能让tooltip在悬停100ms后弹出。

内容的提问来源于stack exchange,提问作者Jasperan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:49:54