国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Vue3問題:如何實現El-table內容超出省略提示?第三條很少有人會

開發 后端
表頭實現使用了Table-column的header插槽,在其內部放入Tooltip文字提示框組件,Tooltip組件的內容為需要展示的完整內容,而在Tooltip組件內部的元素,則是需要超出省略的內容。

一、需求分析,問題描述

1、需求

一個表格,分表頭、表體、表尾三部分。

當每個單元格的內容過長超出時,需要省略,用省略號代替超出的部分。

同時,當鼠標移入上去時,會在上方彈出一個小提示框,其內部可以展示完整的對應內容,當鼠標移出時,隱藏小提示框。

2、問題

  • 表頭如何實現省略提示效果?
  • 表體如何實現省略提示效果?
  • 表尾如何實現省略提示效果?
  • 如何實現單行省略和多行省略?

二、解決問題,答案速覽

實現代碼如下,復制粘貼即可直接使用。

1、表頭實現

表頭實現的關鍵,在于在每一欄中插入表頭插槽,并自定義內部的內容。

如果你有時間,具體代碼分析、知識總結,可見第三部分。

1<!-- 模版代碼 -->
 2<el-table-column prop="principal">
 3 <!-- 表頭插槽 -->
 4 <template #header>
 5 <!-- 小提示框 -->
 6 <el-tooltip :disabled="isShowTooltip" content="Principal Repayment" placement="top">
 7 <!-- 單行省略樣式、鼠標移入事件 -->
 8 <div class="singe-line" @mouseover="onMouseOver($event.target)">Principal Repayment</div>
 9 </el-tooltip>
10 </template>
11 <!-- 表體插槽 -->
12 <template #default="scope">{{ scope.row.principal }}</template>
13</el-table-column>
14
15// 邏輯代碼
16// Tooltip是否禁用標識 默認禁用
17const isShowTooltip = ref(true)
18// 表格鼠標移入事件
19const onMouseOver = (target: any) => {
20 // 判斷是否開啟tooltip功能
21 if (target.scrollWidth > target.clientWidth) {
22 isShowTooltip.value = false;
23 } else {
24 isShowTooltip.value = true;
25 }
26}
27
28// 樣式代碼
29// 單行文本省略
30.singe-line {
31 text-overflow: ellipsis;
32 overflow: hidden;
33 word-break: break-all;
34 white-space: nowrap;
35 }

2、表體實現

表體實現的關鍵,在于在每一欄中添加show-overflow-tooltip屬性,當內容過長被隱藏時顯示tooltip小提示框。

如果你有時間,具體代碼分析、知識總結,可見第三部分。

1<el-table-column fixed prop="date" label="No" width="60" show-overflow-tooltip>
2</el-table-column>

3、表尾實現

表尾實現的關鍵,在于通過獲取表尾元素,為其追加一個tooltip小提示框子元素,并為其綁定指定列的內容和鼠標移入移出事件。

該實現方式為原生js實現,代碼比較冗余。大澈并沒有找到最優的答案,網上對此問題的描述也很少,如果看到這有最優解的朋友,感謝留言,已幫助更多其他朋友!

如果你有時間,具體代碼分析、知識總結,可見第三部分。

1<!-- 模版代碼 -->
 2<el-table :data="tableData" border show-summary :summary-method="getSummaries" style="width: 100%" max-height="500">
 3</el-table>
 4
 5
 6// 邏輯代碼
 7// 合計數據
 8let sumsValue = [] as any
 9
 10// 表格合計列邏輯
 11const getSummaries = (param: SummaryMethodProps) => {
 12 const { columns, data } = param
 13
 14 const sums: string[] = []
 15 columns.forEach((column, index) => {
 16 // 第0列
 17 if (index === 0) {
 18 sums[index] = t('pdCalculateLoan.Total')
 19 return
 20 }
 21
 22 // 最后一列
 23 if (index === columns.length - 1) {
 24 sums[index] = ''
 25 return
 26 }
 27
 28 const values = data.map((item) => Number(item[column.property]))
 29 if (!values.every((value) => Number.isNaN(value))) {
 30 sums[index] = values.reduce((prev: any, curr: any) => {
 31 const value = Number(curr);
 32 if (!isNaN(value)) {
 33 // 合計計算
 34 return prev + curr;
 35 } else {
 36 return prev;
 37 }
 38 }, 0);
 39 } else {
 40 sums[index] = ''
 41 }
 42 })
 43
 44 // 存儲合計數據
 45 sumsValue = sums
 46
 47 return sums
 48}
 49
 50// 添加表格底部文本提示
 51const handleTableFootTooltip = () => {
 52 // 加延時器,防止拿不到元素
 53 setTimeout(() => {
 54 try {
 55 // 獲取表格底部元素
 56 let tableCellNodeArr = document.querySelectorAll('.el-table__footer-wrapper .el-table__footer td.el-table__cell')
 57
 58 //創建節點元素節點
 59 let tooltipOne = document.createElement('div');
 60 let tooltipTwo = document.createElement('div');
 61 let tooltipThree = document.createElement('div');
 62
 63 // 元素賦值
 64 tooltipOne.innerHTML = `${sumsValue[1]}`
 65 tooltipOne.className = 'tooltip'
 66 tooltipTwo.innerHTML = `${sumsValue[2]}`
 67 tooltipTwo.className = 'tooltip'
 68 tooltipThree.innerHTML = `${sumsValue[3]}`
 69 tooltipThree.className = 'tooltip'
 70
 71 tableCellNodeArr[1].onmouseover = () => {
 72 tooltipOne.style.display = 'block'
 73 }
 74 tableCellNodeArr[1].onmouseout = () => {
 75 tooltipOne.style.display = 'none'
 76 }
 77 tableCellNodeArr[2].onmouseover = () => {
 78 tooltipTwo.style.display = 'block'
 79 }
 80 tableCellNodeArr[2].onmouseout = () => {
 81 tooltipTwo.style.display = 'none'
 82 }
 83 tableCellNodeArr[3].onmouseover = () => {
 84 tooltipThree.style.display = 'block'
 85 }
 86 tableCellNodeArr[3].onmouseout = () => {
 87 tooltipThree.style.display = 'none'
 88 }
 89
 90 // 追加子元素
 91 tableCellNodeArr[1].append(tooltipOne)
 92 tableCellNodeArr[2].append(tooltipTwo)
 93 tableCellNodeArr[3].append(tooltipThree)
 94 } catch (error) {
 95 // 捕獲錯誤
 96 console.log(error);
 97 }
 98 }, 500)
 99}
100
101onMounted(() => {
102 handleTableFootTooltip()
103})
104
105
106// 樣式代碼
107:deep .el-table__footer-wrapper {
108 overflow: visible;
109
110 // 表格底部
111 .el-table__footer {
112 td.el-table__cell {
113 position: relative;
114
115 // 單行文本超出省略
116 div {
117 text-overflow: ellipsis;
118 overflow: hidden;
119 word-break: break-all;
120 white-space: nowrap;
121 }
122
123 // 畫提示框
124 .tooltip {
125 display: none;
126 width: 100%;
127 padding: 6px 0;
128 border-radius: 5px;
129 background-color: #313133;
130 text-align: center;
131 color: #fff;
132 position: absolute;
133 top: -40px;
134 left: 0;
135 overflow: visible;
136 font-size: 12px;
137 font-family: Poppins-Regular;
138
139 // 畫小三角
140 &::before {
141 content: "";
142 display: block;
143 position: absolute;
144 left: 45%;
145 bottom: -16px;
146 border-width: 10px;
147 border-style: solid dashed dashed dashed; 
148 border-color: #313133 transparent transparent transparent; 
149 }
150 }
151 }
152 }
153 }

三、問題解析,知識總結

1、表頭如何實現省略提示效果?

表頭實現使用了Table-column的header插槽,在其內部放入Tooltip文字提示框組件,Tooltip組件的內容為需要展示的完整內容,而在Tooltip組件內部的元素,則是需要超出省略的內容。

為超出省略的內容元素添加鼠標移入事件,當目標元素的可滾動寬度,即實際寬度+隱藏寬度,大于目標元素的實際寬度時,說明內容元素已超出省略,此時Tooltip組件啟用,反之Tooltip組件禁用隱藏。

Table-column的插槽說明如下:

2、表體如何實現省略提示效果?

表體實現的關鍵,在于在每一欄中添加show-overflow-tooltip屬性,當內容過長被隱藏時顯示tooltip小提示框。

show-overflow-tooltip屬性加在Table上,影響的將是全部列,加在Table-column上時,影響的將是指定列,這里可以根據具體業務需求添加。

show-overflow-tooltip屬性說明如下:

3、表尾如何實現省略提示效果?

表尾實現的關鍵,在于通過獲取表尾元素,為其追加一個tooltip小提示框子元素,并為其綁定指定列的內容和鼠標移入移出事件。

在表格合計回調里,先把合計數據存到數組變量中,然后通過獲取表尾元素,為其追加一個tooltip小提示框子元素,再依次將數組變量中的合計數據對應下標取出為其賦值,并通過鼠標事件和樣式顯示隱藏來控制其展示。

Table幾個屬性說明如下:

4、如何實現單行省略和多行省略?

1// 單行文本省略
 2 .singe-line {
 3 text-overflow: ellipsis; //文本超出顯示省略號
 4 overflow: hidden; //文本超出隱藏
 5 white-space: nowrap; //只保留一個空白,文本不會換行
 6 }
 7
 8 // 兩行文本省略
 9 .two-line {
10 display: -webkit-box; //將盒子轉換為彈性盒子
11 -webkit-box-orient: vertical; //文本顯示方式,默認水平
12 -webkit-line-clamp: 2; //設置顯示多少行
13 text-overflow: ellipsis; //文本超出顯示省略號
14 overflow: hidden; //文本超出隱藏
15 }
責任編輯:姜華 來源: 今日頭條
相關推薦

2021-04-30 15:30:54

大數據互聯網數據分析

2024-02-01 09:10:04

頁面引導工具Vue3

2023-12-11 09:27:04

2012-06-19 10:57:21

程序員職業

2020-05-14 10:42:42

裁員,技術管理,技術負

2020-09-17 11:36:08

TikTok程序禁令

2024-08-06 09:51:21

SpringHTTPJSON

2025-04-22 09:01:23

2024-12-25 12:12:12

2024-01-23 09:15:33

Vue3組件拖拽組件內容編輯

2024-01-03 08:20:40

2019-10-30 12:24:57

網絡安全安全風險網絡攻擊

2021-12-02 05:50:35

Vue3 插件Vue應用

2023-11-20 08:29:33

Vue微信掃碼授權登錄

2023-12-18 09:58:46

微信掃碼支付Vue3

2024-01-08 08:50:19

Vue3級聯菜單數據懶加載

2012-10-22 10:04:11

AMD微型服務器嵌入式

2013-01-25 13:06:47

安全風險

2023-11-28 09:03:59

Vue.jsJavaScript

2012-12-27 10:07:22

點贊
收藏

51CTO技術棧公眾號

亚洲成年人在线播放| 欧美精品自拍偷拍| 国产精品久久久久久亚洲毛片| 久久精品欧美一区二区三区不卡| 国产精品国产三级国产三级人妇 | 久久人体视频| 日韩精品一级二级| 亚洲综合色婷婷| 久久九九热免费视频| 天堂va久久久噜噜噜久久va| 中文在线а天堂av| 99精品国产高清一区二区麻豆| 精品动漫3d一区二区三区免费版| 在线亚洲观看| 国产亚洲精品bt天堂精选| 精品伦理精品一区| 国产精品视频一区国模私拍| 丝袜人妻一区二区三区| 午夜视频在线观看网站| 欧美亚洲国产激情| 亚洲国产高清在线| 久久久在线观看| 性欧美xxxx| 99国产在线视频| 中文字幕在线网| 精品欧美午夜寂寞影院| 粉嫩欧美一区二区三区高清影视| 日韩欧美在线网站| 91精品国产电影| 国产精品福利在线播放| 中文字幕欧美视频在线| 日本黄网站色大片免费观看| 91p九色成人| 国产欧美视频一区二区三区| 国产精品成av人在线视午夜片 | 奇米色一区二区三区四区| 久久综合久久综合这里只有精品| 亚洲黄色小视频在线观看| 黄网在线免费看| 自拍欧美日韩| 综合色中文字幕| 色天天综合狠狠色| 一区二区三区四区国产| 校园春色综合| 三区四区不卡| 国产精品免费视频一区| 久久久精品欧美| 99在线观看视频免费| 日本在线啊啊| 美女脱光内衣内裤视频久久影院| 日韩久久久久久| 久久久综合亚洲91久久98| 最近高清中文在线字幕在线观看| 91精品天堂福利在线观看| 欧美日韩国产精品专区| 91免费国产网站| 国产黄色片在线观看| 国内揄拍国内精品久久| 欧洲一区在线电影| 久久久99爱| 99久久精品免费看国产小宝寻花 | 国产精品久久77777| 免费看成年人视频在线观看| 在线成人亚洲| 亚洲第一福利网站| 日韩一级免费看| av综合网址| 亚洲国产精品久久久久婷婷884| 国产精品区一区| 久久人体大尺度| 久久精品欧美日韩精品| 91精品在线影院| 久久精品视频观看| www.一区二区| 97色在线播放视频| 韩国三级av在线免费观看| 视频一区二区三区入口| 中文字幕日韩av综合精品| 91精品国产高久久久久久五月天| 日韩在线观看www| 国产高清亚洲一区| 国产精品吹潮在线观看| 麻豆传媒在线免费| 国产三区在线成人av| 国产精选一区二区| 99综合久久| 欧洲av一区二区嗯嗯嗯啊| 奇米影视亚洲色图| 久久在线视频| 中文字幕日韩欧美精品在线观看| 男人免费av| 国产精品一区二区黑丝| 亚洲va男人天堂| 欧美风情在线视频| 欧美日韩三级一区二区| 国产xxxxx视频| 日韩成人av影视| 国产精品视频导航| 亚瑟国产精品| 911精品国产一区二区在线| 黄色无遮挡网站| 欧美亚洲一区二区三区| 热久久免费国产视频| 国产成人免费9x9x人网站视频 | 色综合久久悠悠| 午夜激情视频在线观看| 亚洲免费在线观看视频| 日韩精品―中文字幕| 国产精品人人爽人人做我的可爱| 国产激情久久久久| 91综合精品国产丝袜长腿久久| 日韩激情在线视频| 欧美6一10sex性hd| 欧美三级欧美一级| 视频午夜在线| 亚洲激情自拍偷拍| 亚洲精品中文字幕无码蜜桃| 成人视屏免费看| 亚洲国产精品123| 亚洲一区图片| 九色视频成人porny| 欧美成人综合| 9a蜜桃久久久久久免费| 久久精品青草| 99久re热视频这里只有精品6| 成人动漫免费在线观看| 日本成人免费在线| 欧美一性一交| 国产va免费精品高清在线| 精品一区二区男人吃奶| 午夜精品久久久久久久久久久久久 | 色婷婷综合久久久久中文字幕| 成人在线视频一区| 国产a级片网站| 91丨porny丨蝌蚪视频| 噼里啪啦国语在线观看免费版高清版| 久久久久久久久岛国免费| 精品久久久久久久无码| 中文字幕av一区二区三区| 久草在线在线视频| 精品日本美女福利在线观看| av在线播放网| 国语自产精品视频在线看一大j8| 天堂在线观看一卡二卡三卡四卡| 欧美国产亚洲另类动漫| 国产一区二区在线观看免费| 日韩在线观看电影完整版高清免费| 激情综合视频| 99精品一区二区三区的区别| 久久久久久久久蜜桃| 国产精品久久久久永久免费看| 色综合色综合色综合色综合色综合| 国产免费a∨片在线观看不卡| 精品久久久久久久久久久久久久久 | 欧美一级裸体视频| 亚洲成人你懂的| 成人在线app| 色偷偷av亚洲男人的天堂| 天堂99x99es久久精品免费| 成人欧美在线视频| 美女高潮久久久| 成年人网站免费视频| 亚洲国产一区二区三区| a天堂中文在线官网在线| www.日韩av.com| 综合天天久久| 日本a在线天堂| 不卡的电视剧免费网站有什么| 欧美.日韩.国产.一区.二区| 快播亚洲色图| 91社区在线播放| 成人动漫av| 日韩一区二区免费高清| 精品三级久久久| 7777奇米亚洲综合久久 | 国产精品美女诱惑| 成人一区二区视频| 免费白浆视频| 日韩高清中文字幕| 欧美好骚综合网| 欧美日韩在线视频一区二区三区| 色综合久久中文字幕综合网 | 国产亚洲在线| 国产对白在线| 亚洲色图狂野欧美| 欧美另类视频| 被下部羞羞漫画| 中文字幕一区二区三区电影| 国产精品av久久久久久麻豆网| 能看的毛片网站| 亚洲第一精品久久忘忧草社区| 国产精品一区二区av交换| 久久69精品久久久久久久电影好| 国产精品久久久亚洲一区| 日本视频在线播放| 日韩国产伦理| 亚洲精品电影久久久| www.成人在线| 伊人久久大香线蕉无限次| 国产视频在线看|