开发预览 更新于 2026-05-10

Tooltip 文字提示

轻量浮层提示 —— 4 种 placement、自动避让视口边缘、hover/focus 双触发。

基础用法

包裹任意触发元素。鼠标悬停或键盘聚焦时显示,鼠标移出或失焦时隐藏。Tooltip 通过 Teleport / Portal 渲染到 <body>,不受父容器 overflow 影响。

背景
<script setup lang="ts">
import { CfButton, CfTooltip } from '@chufix-design/vue';
</script>

<template>
  <CfTooltip content="鼠标悬停或键盘聚焦都会显示">
    <CfButton variant="tertiary">悬停我</CfButton>
  </CfTooltip>
</template>
import { CfButton, CfTooltip } from '@chufix-design/react';

export default function Demo() {
return (
  <CfTooltip content="鼠标悬停或键盘聚焦都会显示">
    <CfButton variant="tertiary">悬停我</CfButton>
  </CfTooltip>
);
}

4 种方向

placement 控制首选方向。当首选方向放不下(贴近视口边缘)时,会自动翻到对侧。

背景
<script setup lang="ts">
import { CfButton, CfTooltip } from '@chufix-design/vue';
</script>

<template>
  <!-- 3×3 grid: each direction has its own quadrant so auto-flip doesn't fire. -->
  <div class="tt-grid">
    <span></span>
    <CfTooltip content="顶部" placement="top">
      <CfButton variant="tertiary">Top</CfButton>
    </CfTooltip>
    <span></span>

    <CfTooltip content="左侧" placement="left">
      <CfButton variant="tertiary">Left</CfButton>
    </CfTooltip>
    <span></span>
    <CfTooltip content="右侧" placement="right">
      <CfButton variant="tertiary">Right</CfButton>
    </CfTooltip>

    <span></span>
    <CfTooltip content="底部" placement="bottom">
      <CfButton variant="tertiary">Bottom</CfButton>
    </CfTooltip>
    <span></span>
  </div>
</template>

<style scoped>
.tt-grid {
  display: grid;
  grid-template-columns: repeat(3, auto);
  justify-content: center;
  gap: 56px 80px;
  padding: 56px 0;
}
</style>
<CfTooltip content="顶部" placement="top"><CfButton>Top</CfButton></CfTooltip>
<CfTooltip content="底部" placement="bottom"><CfButton>Bottom</CfButton></CfTooltip>
<CfTooltip content="左侧" placement="left"><CfButton>Left</CfButton></CfTooltip>
<CfTooltip content="右侧" placement="right"><CfButton>Right</CfButton></CfTooltip>

延迟与长文本

delay 控制显示前的等待时间(毫秒)。maxWidth 限制最大宽度,超出换行。

背景
<script setup lang="ts">
import { CfButton, CfTooltip } from '@chufix-design/vue';
</script>

<template>
  <div class="demo-row" style="gap: 1rem;">
    <CfTooltip content="0 延迟显示" :delay="0">
      <CfButton variant="tertiary">无延迟</CfButton>
    </CfTooltip>
    <CfTooltip content="500ms 延迟" :delay="500">
      <CfButton variant="tertiary">500ms</CfButton>
    </CfTooltip>
    <CfTooltip
      content="内容比较长会自动换行,限制最大宽度避免一行甩到屏幕外去;超出视口边缘也会自动翻转方向。"
      :max-width="220"
    >
      <CfButton variant="tertiary">长文本</CfButton>
    </CfTooltip>
  </div>
</template>
<CfTooltip content="0 延迟" delay={0}>
<CfButton>无延迟</CfButton>
</CfTooltip>

<CfTooltip content="500ms" delay={500}>
<CfButton>500ms</CfButton>
</CfTooltip>

<CfTooltip content="内容比较长,会自动换行..." maxWidth={220}>
<CfButton>长文本</CfButton>
</CfTooltip>

API

Prop类型默认值说明
contentstring(Vue)/ ReactNode(React)浮层内容;Vue 还可用 #content 插槽
placement'top' | 'bottom' | 'left' | 'right''top'首选方向,溢出时自动翻转到对侧
delaynumber100显示前延迟(毫秒)
hideDelaynumber80隐藏前延迟,避免抖动
disabledbooleanfalse完全不显示
offsetnumber8触发器与浮层之间的间距(像素)
maxWidthnumber | string限制最大宽度,超出换行

反馈与讨论

Tooltip 文字提示 的讨论

0
0 / 600
一键发送
正在加载评论...