如何修改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
相关产品推荐
相关产品推荐

