element-UI table文字超出兩行,隱藏多餘文字,移入顯示tips

element-UI表格的列屬性

經過設置 :show-overflow-tooltip=「true」 這個屬性能夠達成超出一行的文字用省略號替代,並帶有移入時tips顯示所有內容的需求。可是若是想要文本超出兩行、三行的需求,顯然設置這個屬性是沒法完成的。web

超出兩行隱藏多餘文本,移入時tips顯示所有內容

咱們想完成的是超出兩行才用省略號隱藏多餘文本,而且移入纔會有tips顯示;兩行之內的文本則不隱藏也不顯示tips。app

超出的文本的隱藏

.myNote{
  display:-webkit-box;
  text-overflow:ellipsis;
  overflow:hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient:vertical;
}

文本超過兩行,移入時tips顯示所有內容

<!-- tips懸浮提示 -->
<el-tooltip
        placement="top"
        v-model="scope.row.showTooltip"
        :open-delay="500"
        effect="dark"
        :disabled="!scope.row.showTooltip">
  <div slot="content">{{scope.row.note}}</div>
  <div @mouseenter="showTips($event,scope.row)" class='myNote'>{{scope.row.note}}</div>
</el-tooltip>

注意! 顯示懸浮提示時v-model 和 disabled屬性要一塊兒使用纔有效果。spa

showTips(obj, row){
      /*obj爲鼠標移入時的事件對象*/

      /*width爲文本在頁面中所佔的寬度,建立標籤,加入到頁面,獲取width,最後在移除*/
      let TemporaryTag = document.createElement('span');
      TemporaryTag.innerText = row.note;
      TemporaryTag.className = 'getTextWidth';
      document.querySelector('body').appendChild(TemporaryTag);
      let currentWidth = document.querySelector('.getTextWidth').offsetWidth;
      document.querySelector('.getTextWidth').remove();

      /*cellWidth爲表格容器的寬度*/
      const cellWidth = obj.target.offsetWidth

      /*當文本寬度小於||等於容器寬度兩倍時,表明文本顯示未超過兩行*/
      currentWidth <= (2*cellWidth) ? row.showTooltip = false : row.showTooltip = true
}

經過長度判斷

在這裏插入圖片描述
一開始我是想經過表格高度去判斷,可是後來發現,高度不是一個固定不變的值,會隨着移入移出變化,而且其餘列的高度超出也會影響到一整行的高度。因此最後仍是經過文本寬度來判斷,把文本寬度與容器寬度比較,這樣獲得的值纔是固定不變的。
code

相關文章
相關標籤/搜索