element Tooltip 文字提示使用方法之列表移上去的效果

介绍:Tooltip的进阶用法,当列表数据超过父元素宽度就显示,没有超过则不显示

首先看一下效果图用法

 具体代码如下:

html

 <div class="container">
    <div class="box">
      <ul class="list">
        <li v-for="(item, index) in list" :key="item">
          <div class="list-item pr20">
            <el-tooltip
              class="item"
              :content="item ? item : ''"
              :disabled="isShowTooltip"
              effect="dark"
              placement="top"
            >
              <div class="over-flow" @mouseover="onMouseOver(index)">
                <span :ref="'noticeName' + index">{{ item }}</span>
              </div>
            </el-tooltip>
          </div>
        </li>
      </ul>
    </div>
  </div>

在data中定义的数据:

 export default {
    data() {
      return {
        list: [
          '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈',
          '我是数据111111111111111111111111111111111111111111111111111',
          '组织培训结束时间',
          '培训学时',
          '承办部门',
        ],
        isShowTooltip: true,//控制Tooltip显示隐藏
      }
    },
    methods: {
      onMouseOver(index) {
        // eval('this.$refs.noticeName' + index)[0]   寻找鼠标移上去的节点
        let parentWidth = eval('this.$refs.noticeName' + index)[0].parentNode
          .offsetWidth //父元素宽度
        let contentWidth = eval('this.$refs.noticeName' + index)[0].offsetWidth //子元素宽度
        //鼠标移上某个节点,当子元素宽度大于父元素宽度就显示文字提示
        if (contentWidth > parentWidth) {
          this.isShowTooltip = false
        } else {
          this.isShowTooltip = true
        }
      },
    },
  }

最后在css中控制样式(这里注意必须要给最外面的盒子一个宽度)

 .container {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 100px;
  }
  .box {
    width: 500px;
    border: 1px solid #ccc;
    border-radius: 4px;
  }
  .list {
    width: 100%;
  }
  .list-item {
    height: 50px;
    line-height: 50px;
    padding: 0 15px;
    border: 1px solid #ccc;
    &:hover {
      color: #00aae2;
      cursor: pointer;
    }
    .over-flow {
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
      width: 100%;
    }
  }

常见的几个计算宽度的属性:

  * offsetWidth 水平方向 width + 左右padding + 左右border-width

  * offsetHeight 垂直方向 height + 上下padding + 上下border-width

  * clientWidth 水平方向 width + 左右padding

   * clientHeight 垂直方向 height + 上下padding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值