赞
踩
实时根据内容宽度选择是否展示tooltip
可是直接复制成一个组件
外层的父级需要控制宽度,
父级元素可以有很多子元素
<template> <div class="text-tooltip"> <el-tooltip class="item" effect="dark" :disabled="isShowTooltip" :content="content" placement="top" :open-delay="300" > <p class="over-flow" :class="className" @mouseover="onMouseOver(refName)" > <span :ref="refName">{{content||'-'}}</span> </p> </el-tooltip> </div> </template> <script> export default { name: 'textTooltip', props: { // 显示的文字内容 content: { type: String, default: () => { return '' } }, // 外层框的样式,在传入的这个类名中设置文字显示的宽度 className: { type: String, default: () => { return '' } }, // 为页面文字标识(如在同一页面中调用多次组件,此参数不可重复) refName: { type: String, default: () => { return '' } } }, data() { return { isShowTooltip: true } }, methods: { onMouseOver(str) { let parentWidth = this.$refs[str].parentNode.offsetWidth; let contentWidth = this.$refs[str].offsetWidth; // 判断是否开启tooltip功能 if (contentWidth > parentWidth) { this.isShowTooltip = false; } else { this.isShowTooltip = true; } } } } </script> <style lang="scss" scoped> .over-flow { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .text-tooltip { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } p { margin: 0; } </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。