Tooltip 提示

文字提示组件。

何时使用

用户鼠标移动到文字上,需要进一步的提示时使用。

基本用法

:::demo 默认在触发元素的上方展示提示信息,可通过position更改展示位置;content可设置提示信息;show-animation控制是否开启动画;disabled提示组件是否可用;enterable鼠标是否可以进入 tooltip;。

<template>
  <div class="demo-btn-group">
    <d-tooltip position="left" content="I am a HTML Element!">
      <d-button>left</d-button>
    </d-tooltip>
    <d-tooltip content="I am a HTML Element!">
      <d-button>top</d-button>
    </d-tooltip>
    <d-tooltip position="bottom" :content="message">
      <d-button>bottom</d-button>
    </d-tooltip>
    <d-tooltip position="right" :content="message">
      <d-button>right</d-button>
    </d-tooltip>
    <d-tooltip content="No Animation" :show-animation="false">
      <d-button>No Animation</d-button>
    </d-tooltip>
    <d-tooltip content="disabled" disabled>
      <d-button>disabled</d-button>
    </d-tooltip>
    <d-tooltip content="鼠标不可进入tooltip" :enterable="false">
      <d-button>鼠标不可进入tooltip</d-button>
    </d-tooltip>
    <d-tooltip content="tooltip出现后自动隐藏" :hide-after="1000">
      <d-button>tooltip出现后自动隐藏</d-button>
    </d-tooltip>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    return {
      message: ref('Upload a file in sh,js,ts,java,css,html,xml.aql,rb,py,php,c,cpp,txt format.'),
    };
  },
});
</script>

<style>
.demo-btn-group > * {
  margin-right: 8px;
  margin-bottom: 12px;
}
</style>

:::

延时触发

:::demo 鼠标移入的时长超过 mouse-enter-delay 毫秒之后才会触发,以防止用户无意划过导致的闪现,默认值是 150 毫秒;鼠标移出之后,再经过mouse-leave-delay毫秒后,Tooltip 组件才会隐藏,默认值是 100 毫秒。

<template>
  <div class="demo-btn-group">
    <d-tooltip content="Mouse enter 500ms later. <br> Show me" :mouse-enter-delay="500">
      <d-button variant="solid">MouseEnter delay 500ms</d-button>
    </d-tooltip>
    <d-tooltip content="Mouse leave 1000ms later. <br> Hide me" :mouse-leave-delay="1000">
      <d-button>MouseLeave delay 1000ms</d-button>
    </d-tooltip>
  </div>
</template>

:::

使用 content 插槽

:::demo

<template>
  <div class="demo-btn-group">
    <d-tooltip>
      <d-button>Overflow Hidden</d-button>
      <template #content>
        <div class="tooltip-box">{{ message }}</div>
      </template>
    </d-tooltip>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    return {
      message: ref(
        '规范的组件化目的不是为了限制创造,而是为了创造者更确定、科学、高效。所有行为决策的价值归依为产品业务。产品业务永远比组件化本身更重要,业务第一。规范不是绝对、教条、冷漠、强制的,实际工作中总会有新增需求、存量优化空间、情感化设计需求超出一般通用规范。保持克制的同时,允许基于强烈业务需求的规范突破;之后如果有足够的理由迭代出组件,那么就进行组件化。'
      ),
    };
  },
});
</script>

<style>
.tooltip-box {
  max-height: 150px;
  max-width: 300px;
  overflow: auto;
  padding: 10px;
}
</style>

:::

Tooltip 参数

参数名 类型 默认值 说明 跳转 Demo
content string -- 可选,Tooltip 显示内容 基本用法
position BasePlacement | BasePlacement[] top 可选,Tooltip 显示位置 基本用法
align start | end | null null 可选,对齐方式,默认居中对齐。
show-animation boolean true 可选,是否显示动画 基本用法
mouse-enter-delay number 150 可选,鼠标移入后延时多久才显示 Tooltip,单位是 ms 延时触发
mouse-leave-delay number 100 可选,鼠标移出后延时多久才隐藏 Tooltip,单位是 ms 延时触发
disabled boolean false 可选,Tooltip 是否可用 基本用法
enterable boolean true 可选,鼠标是否可以进入到 tooltip 中 基本用法
hide-after number 0 可选,tooltip 出现后自动隐藏延时,单位为 ms 基本用法
overlay-class string '' 可选,自定义弹出层的样式
teleport string | HTMLElement 'body' 可选,挂载节点,等同于 Teleport 组件的to 属性

Tooltip 插槽

插槽名 说明
default 默认插槽,设置触发元素
content 内容插槽,自定义内容与样式

Tooltip 类型定义

BasePlacement

type BasePlacement = 'top' | 'right' | 'bottom' | 'left';