使用局部自定义指令实现
HTML:
<el-tooltip v-akTooltipAutoShow class="item" effect="dark" content="Top Center 提示文字" placement="top">
Javascript:
import Vue from 'vue'
import { getStyle } from 'element-ui/src/utils/dom'
使用自定义指令实现
directives: {
akTooltipAutoShow: {
inserted: function(el, binding, vnode) {
el.addEventListener('mouseenter', function(e) {
const defalutSilent = !!Vue.config.silent
Vue.config.silent = true
vnode.componentInstance.disabled = true
const range = document.createRange()
range.setStart(el, 0)
range.setEnd(el, el.childNodes.length)
const rangeWidth = Math.round(range.getBoundingClientRect().width)
const padding = (parseInt(getStyle(el, 'paddingLeft'), 10) || 0) + (parseInt(getStyle(el, 'paddingRight'), 10) || 0)
if (rangeWidth + padding > el.offsetWidth || el.scrollWidth > el.offsetWidth) {
vnode.componentInstance.disabled = false
}
Vue.config.silent = defalutSilent
})
}
}
},