zui
Version:
一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。
286 lines (232 loc) • 9.83 kB
Markdown
section: javascript
id: tooltip
description: 为元素额外提供消息文本
icon: icon-chat
filter: tishixiaoxi tsxx
---
# 提示消息
提示消息又称“工具提示”,在用户鼠标悬停在元素上时及时显示额外的内容。
## 示例
下面示例中的每个链接都有提示消息,将鼠标移到链接上可以查看提示消息。
<example class="tooltip-demo">
<p><a href="#" data-toggle="tooltip" title="英语:Cascading Style Sheets,简写CSS">层叠样式表</a>,又称串样式列表、级联样式表、串接样式表、层叠样式表、階層式樣式表,一种用来为<a href="#" data-toggle="tooltip" title="如HTML文档或XML应用">结构化文档</a>添加样式(字体、间距和颜色等)的计算机语言,由 W3C 定义和维护。目前最新版本是 CSS2.1,为 W3C 的推荐标准。CSS3现在已被大部分现代浏览器支持,而下一版的 CSS4 仍在开发过程中。(摘自<a href="https://zh.wikipedia.org/wiki/%E5%B1%82%E5%8F%A0%E6%A0%B7%E5%BC%8F%E8%A1%A8" data-toggle="tooltip" title="访问“层叠样式表”词条" target="_blank">维基百科</a>)</p>
</example>
```html
<a href="#" data-toggle="tooltip" title="英语:Cascading Style Sheets,简写CSS">层叠样式表</a>
```
```js
// 你需要手动初始化工具提示
$('[data-toggle="tooltip"]').tooltip();
```
为需要显示工具提示的元素添加 `[data-toggle="tooltip"]` 属性,并调用工具提示初始化方法即可。默认情况下元素的 `[title]` 属性值即为工具提示显示的内容。
<div class="alert alert-warning">
<h4>提示</h4>
<p>提示消息与按钮组和输入框组联合使用时需要一些特殊设置:在 .btn-group 或 .input-group 内的元素上使用提示消息时,你需要指定 container: 'body'选项以避免不需要的副作用(例如,当工具提示显示之后,与其合作的页面元素可能变得更宽或是去圆角)。</p>
</div>
## 弹出方向
使用 `placement` 选项来指定工具提示相对于元素显示的位置。
<div class="example tooltip-demo">
<button type="button" class="btn" data-toggle="tooltip" data-placement="left" title="左侧提示内容">左侧提示</button>
<button type="button" class="btn" data-toggle="tooltip" data-placement="top" title="上方提示内容">上方提示</button>
<button type="button" class="btn" data-toggle="tooltip" data-placement="bottom" title="下方提示内容">下方提示</button>
<button type="button" class="btn" data-toggle="tooltip" data-placement="right" title="右侧提示内容">右侧提示</button>
</div>
```html
<button type="button" class="btn" data-toggle="tooltip" data-placement="left" title="左侧提示内容">左侧提示</button>
```
```html
<button type="button" class="btn" data-toggle="tooltip" data-placement="top" title="上方提示内容">上方提示</button>
```
```html
<button type="button" class="btn" data-toggle="tooltip" data-placement="bottom" title="下方提示内容">下方提示</button>
```
```html
<button type="button" class="btn" data-toggle="tooltip" data-placement="right" title="右侧提示内容">右侧提示</button>
```
```js
// 或者在初始化时指定
$('[data-toggle="tooltip"]').tooltip({
placement: 'bottom'
});
```
## 外观
使用 `tipClass` 指定外观类名来更改颜色主题。
<div class="example tooltip-demo">
<a class="text-primary" data-toggle="tooltip" data-tip-class="tooltip-primary" title="tooltip-primary">.tooltip-primary</a>
<a class="text-success" data-toggle="tooltip" data-tip-class="tooltip-success" title="tooltip-success">.tooltip-success</a>
<a class="text-info" data-toggle="tooltip" data-tip-class="tooltip-info" title="tooltip-info">.tooltip-info</a>
<a class="text-warning" data-toggle="tooltip" data-tip-class="tooltip-warning" title="tooltip-warning">.tooltip-warning</a>
<a class="text-danger" data-toggle="tooltip" data-tip-class="tooltip-danger" title="tooltip-danger">.tooltip-danger</a>
</div>
```html
<a data-toggle="tooltip" data-tip-class="tooltip-primary" title="tooltip-primary">.tooltip-primary</a>
```
```html
<a data-toggle="tooltip" data-tip-class="tooltip-success" title="tooltip-success">.tooltip-success</a>
```
```html
<a data-toggle="tooltip" data-tip-class="tooltip-info" title="tooltip-info">.tooltip-info</a>
```
```html
<a data-toggle="tooltip" data-tip-class="tooltip-warning" title="tooltip-warning">.tooltip-warning</a>
```
```html
<a data-toggle="tooltip" data-tip-class="tooltip-danger" title="" data-original-title="tooltip-danger">.tooltip-danger</a>
```
```js
// 或者在初始化时指定
$('[data-toggle="tooltip"]').tooltip({
tipClass: 'tooltip-success'
});
```
## 选项
可以将选项通过 `[data-*]` 属性或 JavaScript 对象指定。
<table class="table table-bordered">
<thead>
<tr>
<th style="width: 100px;">名称</th>
<th style="width: 100px;">类型</th>
<th style="width: 50px;">默认值</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>`animation`</td>
<td>布尔值</td>
<td>`true`</td>
<td>决定是否应用淡入淡出动画。</td>
</tr>
<tr>
<td>`container`</td>
<td>字符串 | `false`</td>
<td>`false`</td>
<td>
<p>决定相对位置的父级容器,例如:`container: 'body'`</p>
</td>
</tr>
<tr>
<td>`delay`</td>
<td>数字 | 对象</td>
<td>`0`</td>
<td>
<p>如果指定为数字,则在指定数值的毫秒数后再显示。</p>
<p>如果指定为对象,则可以分别为显示或隐藏之前延迟的数值,例如:`delay: { show: 500, hide: 100 }`</p>
</td>
</tr>
<tr>
<td>`html`</td>
<td>布尔值</td>
<td>`false`</td>
<td>是否允许消息内容包含 HTML 格式源码。如果设置为 `false`,则仅仅使用 jQuery 的 `text()` 方法来设置消息内容。</td>
</tr>
<tr>
<td>`placement`</td>
<td>字符串 | 函数</td>
<td>`'top'`</td>
<td>指定消息显示的位置,可选值有:`'top'`, `'bottom'`, `'left'`, `'right'`, `'auto'`。如果设置为 `'auto'`,则会自动决定位置。也可以指定为一个函数,来动态返回应该显示的位置。</td>
</tr>
<tr>
<td>`selector`</td>
<td>字符串 | `false`</td>
<td>`false`</td>
<td>如果指定了该选项,则会在代理元素来触发显示工具提示,这样可以对于一些动态内容展示工具提示。</td>
</tr>
<tr>
<td>`template`</td>
<td>字符串</td>
<td>`'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'`</td>
<td>HTML 模板字符串用来创建工具提示显示内容元素。要求顶级元素必须有 `.tooltip` 类,工具提示的内容会设置为 `.tooltip-inner` 的内容,`.tooltip-arrow` 将作为箭头元素。</td>
</tr>
<tr>
<td>`title`</td>
<td>字符串 | 函数</td>
<td>`''`</td>
<td>设定提示消息内容,如果为函数,可以动态返回用于提示消息内容文本。</td>
</tr>
<tr>
<td>`trigger`</td>
<td>字符串</td>
<td>`'hover focus'`</td>
<td>指定哪些事件会触发显示提示消息,多个事件用空格隔开,可选值包括:`'click'`、`'hover'`、`'focus'`、`'manual'`。</td>
</tr>
<tr>
<td>`tipId`</td>
<td>字符串</td>
<td>`''`</td>
<td>当工具提示显示时为动态创建的 `.tooltip` 元素指定一个 ID 属性。</td>
</tr>
<tr>
<td>`tipClass`</td>
<td>字符串</td>
<td>`''`</td>
<td>当工具提示显示时为动态创建的 `.tooltip` 元素指定一个 CLASS 属性,多个 CLASS 使用空格分隔。</td>
</tr>
</tbody>
</table>
## 方法
### <span class="code">$().tooltip(options)</span>
为一组元素应用工具提示。
### <span class="code">.tooltip('show')</span>
展示工具提示。
```js
$('#element').tooltip('show');
```
### <span class="code">.tooltip('show', content)</span>
展示工具提示并指定要显示的文本内容。
```js
$('#element').tooltip('show', '这是新的工具提示内容');
```
### <span class="code">.tooltip('hide')</span>
隐藏工具提示。
```js
$('#element').tooltip('hide');
```
### <span class="code">.tooltip('toggle')</span>
展示或隐藏工具提示。
```js
$('#element').tooltip('toggle');
```
### <span class="code">.tooltip('destroy')</span>
隐藏并销毁工具提示。
```js
$('#element').tooltip('destroy');
```
## 事件
<table class="table table-bordered">
<thead>
<tr>
<th style="width: 150px;">事件类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>`show.zui.tooltip`</td>
<td>当 <code>show</code> 方法被调用之后,此事件将被立即触发。</td>
</tr>
<tr>
<td>`shown.zui.tooltip`</td>
<td>当工具提示展示到用户面前之后(同时CSS过渡效果执行完之后)此事件被触发。</td>
</tr>
<tr>
<td>`hide.zui.tooltip`</td>
<td>当 <code>hide</code> 方法被调用之后,此事件被触发。</td>
</tr>
<tr>
<td>`hidden.zui.tooltip`</td>
<td>当工具提示被隐藏之后(同时CSS过渡效果执行完之后),此事件被触发。</td>
</tr>
</tbody>
</table>
使用 jQuery `on()` 方法来绑定事件。
```js
$('[data-toggle="tooltip"]').on('show.zui.tooltip', function() {
// 处理工具提示显示时的事件
});
```
<script>
function afterPageLoad() {
$('#pageBody [data-toggle="tooltip"]').tooltip();
};
</script>