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