elementUi——table表格中内容超过2行后,省略号...展示,鼠标悬停展示全部

本文介绍了如何在elementUI和elementPlus的el-table组件中,针对UI设计需求,实现文本行数限制的tooltip功能,包括设置隐藏行数、内容处理和HTML字符串处理。同时展示了父子组件间的交互和自定义内容截取方法。
摘要由CSDN通过智能技术生成

elementUI、elementPlus的el-table都支持文字一行展示不全隐藏,悬停展示tooltip。但是UI设计会提出展示2行隐藏的的要求,我们便有这样的需求。项目中el-table往往会进行二次封装,所以下面的代码是在此基础上解决这个问题的。

1、首先是组件内代码

<template v-if="item.tooltip">
  <el-tooltip
    :content="item.tooltip.contentFun ? item.tooltip.contentFun(scope.row[item.prop]) : scope.row[item.prop]"
    placement="top"
    :hide-after="0"
    :show-after="100"
    :raw-content="item.tooltip.rawContent || false"
    effect="dark">
      <div class="tooltip-content"
        :style="{
          webkitLineClamp: item.tooltip.lines || 1,
          lineClamp: item.tooltip.lines || 1
        }"
      >{{ scope.row[item.prop] || '--' }}</div>
  </el-tooltip>
</template>
/**
  * {
  *   tooltip: { 气泡文字提示
  *     lines  展示几行后隐藏   数字类型
  *     rawContent   内容是否作为 HTML 字符串处理   Boolean类型
  *     contentFun   内容处理函数   Funciton(data){}
  *   }
  * }
*/
columns: {
  type: Array,
  default: () => []
},

我们通常会props接受columns来生成表格,这里如果列带有tooltip属性,则悬停展示全部文字。tooltip可以是一个Object或者Boolean。

Object支持参数:

  • lines  现在是支持2行,那么就可能支持3行、4行,所以这里直接设为参数
  • rawContent  内容是否作为HTML字符串处理,Boolean类型。如果内容折行带有<br>标签,是需要当HTML字符串处理的。
  • contentFun  我们的UI设计希望内容截取这行,所以这里接受内容的处理方法

3、父组件代码

[
  {
    label: 'xxxx',
    prop: 'xxxx',
    fixed: true,
    props: {
      minWidth: '170'
    },
    tooltip: {
      lines: 2,
      rawContent: true,
      contentFun: function (data) {
        const arr = data.split('(')
        return `${arr[0]}<br>(${arr[1]}`
      }
    }
  },
]

 我这里是需要截取折行,具体使用的时候根据需要去处理内容即可。

后面还想要扩展下如果没有隐藏就无需悬停展示全部,写了以后会更新上来。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Uniapp,可以使用`u-popup`组件来实现内容超过多的表格的弹框显示。具体实现步骤如下: 1. 在表格需要弹框显示的单元格上添加一个`span`标签,并设置一个类名,例如`show-popup`。 2. 在`show-popup`类名对应的样式,设置`text-overflow: ellipsis`和`overflow: hidden`,使得单元格内容超过时显示省略号。 3. 使用`u-popup`组件来实现弹框,将`u-popup`组件放置在表格的外部,通过设置`v-model`来控制弹框的显示与隐藏。 4. 在`show-popup`类名对应的`span`标签,添加`@click`事件,在事件处理函数设置弹框的内容。 下面是一个简单的示例代码: ``` <template> <view> <u-table :data="tableData"> <u-table-column title="姓名" field="name"></u-table-column> <u-table-column title="年龄" field="age"></u-table-column> <u-table-column title="地址" field="address"> <template slot-scope="{ row }"> <span class="show-popup" @click="showPopup(row)">{{ row.address }}</span> </template> </u-table-column> </u-table> <u-popup v-model="popupVisible"> <view>{{ popupContent }}</view> </u-popup> </view> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 20, address: '北京市海淀区' }, { name: '李四', age: 25, address: '上海市浦东新区' }, { name: '王五', age: 30, address: '深圳市南山区' }, ], popupVisible: false, popupContent: '', }; }, methods: { showPopup(row) { this.popupContent = row.address; this.popupVisible = true; }, }, }; </script> <style> .show-popup { display: inline-block; max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } </style> ``` 在上面的示例,我们使用`u-table`组件来展示表格数据,并在表格的地址列使用`u-popup`组件来实现弹框显示。当用户点击表格的地址单元格时,会触发`showPopup`方法,该方法将弹框的内容设置为当前行的地址,并将`popupVisible`设置为`true`,从而显示弹框。在弹框显示时,用户可以通过点击弹框外部或弹框上的关闭按钮来关闭弹框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值