vue 中的 table上设置column.ellipsis让单元格内容根据宽度自动省略,鼠标hover上显示完整内容

官网实例

<template>
  <a-table :columns="columns" :data-source="data">
    <a slot="name" slot-scope="text">{{ text }}</a>
  </a-table>
</template>
<script>
const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    key: 'name',
    scopedSlots: { customRender: 'name' },
  },
  {
    title: 'Age',
    dataIndex: 'age',
    key: 'age',
    width: 80,
  },
  {
    title: 'Address',
    dataIndex: 'address',
    key: 'address 1',
    ellipsis: true,
  },
  {
    title: 'Long Column Long Column Long Column',
    dataIndex: 'address',
    key: 'address 2',
    ellipsis: true,
  },
  {
    title: 'Long Column Long Column',
    dataIndex: 'address',
    key: 'address 3',
    ellipsis: true,
  },
  {
    title: 'Long Column',
    dataIndex: 'address',
    key: 'address 4',
    ellipsis: true,
  },
];

const data = [
  {
    key: '1',
    name: 'John Brown',
    age: 32,
    address: 'New York No. 1 Lake Park, New York No. 1 Lake Park',
    tags: ['nice', 'developer'],
  },
  {
    key: '2',
    name: 'Jim Green',
    age: 42,
    address: 'London No. 2 Lake Park, London No. 2 Lake Park',
    tags: ['loser'],
  },
  {
    key: '3',
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park, Sidney No. 1 Lake Park',
    tags: ['cool', 'teacher'],
  },
];

export default {
  data() {
    return {
      data,
      columns,
    };
  },
};
</script>

实际项目实现

问题描述:

根据官网实例知在字段中加ellipsis: true,属性即可,但是实际上只实现了让多余内容省略显示,鼠标hover上没有反应并不会出现具体内容。

排查原因知:

官网上的样式生效是在td上,实际项目中对table进行了封装重写,td下面还有个span,内容是在span中。

解决方法:

在span上增加:title="text"

<a-table class="param-table" size="small" type="dashed" bordered :dataSource="dataSource" :columns="columns"
      :rowKey="(record) => record.key" @change="changePage" :pagination="pagination" :loading="loading">
    <template v-for="(col,index) in editableColumns" :slot="col" slot-scope="text, record, index">
        <span :key="col" :title="text">
            <a-input v-if="record.editable && col.indexOf('value') == -1" :maxLength="64" style="margin: -5px 0" :value="text"/>
            <template v-else-if="col.indexOf('value') != -1">
                <el-popover placement="left" width="auto" trigger="hover">
                    <el-table :data="record.rangeSource">
                        <el-table-column width="100%" property="rangeValue" label="取值范围"></el-table-column>
                    </el-table>
                    <span slot="reference" class="ant-table-row-cell-ellipsis value-style" style="display:block; cursor:pointer; padding:8px;height: 37px;">{{ text }}</span>
                </el-popover>
            </template>
            <template v-else>{{ text }}</template>
        </span>
    </template>
</a-table>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 让高度根据页面内容自动适应,可以使用以下几种方法: 1. 使用 CSS 的 flex 布局 在父元素设置 `display: flex;` 并且将子元素的 `flex-grow` 属性设置为 1,这样子元素就会根据父元素的高度自动适应。 ```html <div class="container"> <div class="content">内容区域</div> </div> ``` ```css .container { display: flex; flex-direction: column; height: 100%; } .content { flex-grow: 1; } ``` 2. 使用 Vue 自带的组件 在 Vue 可以使用 `keep-alive` 组件或者 `transition` 组件来实现高度自适应。这两个组件都会动态添加和移除元素,因此可以根据内容自动计算高度。 ```html <template> <div> <keep-alive> <router-view /> </keep-alive> </div> </template> <style> div { height: 100%; } </style> ``` ```html <template> <transition> <div v-if="show">内容区域</div> </transition> </template> <script> export default { data() { return { show: true } } } </script> <style> div { height: 100%; } </style> ``` 3. 使用 JavaScript 动态计算高度 在 Vue 可以使用 `ref` 来获取元素的引用,然后使用 JavaScript 动态计算高度。 ```html <template> <div ref="container"> <div>内容区域</div> </div> </template> <script> export default { mounted() { this.$nextTick(() => { const container = this.$refs.container container.style.height = `${container.scrollHeight}px` }) } } </script> <style> div { height: 100%; } </style> ``` 以上是三种常见的让高度根据页面内容自动适应的方法,具体选择哪种方法需要根据具体情况来决定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值