element表格表头换行三种方式

本文介绍了在Vue.js中使用Element UI组件库时,如何实现表格表头换行的三种方法:一是利用头部插槽拆分文字到两个div中;二是通过标签函数返回换行字符串并结合CSS控制;三是动态方式,根据后台返回的数据动态生成换行表头。示例代码详细展示了这些实现方式。
摘要由CSDN通过智能技术生成
<template>
  <div class="vueWrap">
    <el-table
      style="width: 900px"
      :data="tableBody"
      border
      :header-cell-style="{
        background: '#FAFAFA',
        color: '#333333',
        fontWeight: 'bold',
        fontSize: '14px',
      }"
    >
      <el-table-column
        type="index"
        label="序号"
        width="58"
        align="center"
      ></el-table-column>

      <!-- 表头换行方式一,使用头部插槽方式,将表头文字拆分在两个div中,因为div盒子是块元素
           所以两个div会换行,所以表头就换行了,此方式适用于固定数据的表头换行 -->
      <el-table-column prop="toolName" width="180" align="center">
        <template slot="header">
          <div>工具箱</div>
          <div>零件名称</div>
        </template>
        <template slot-scope="scope">
          <span>{{ scope.row.toolName }}</span>
        </template>
      </el-table-column>

      <el-table-column label="供应商" prop="supplier" width="120" align="center">
      </el-table-column>

      <!-- 表头换行方式二,较之于方式一,这种方式是/n换行符,加css的white-space空白样式控制-->
      <el-table-column
        :label="labelFn()"
        prop="supplierCountry"
        width="180"
        align="center"
      >
      </el-table-column>

      <!-- 表头换行方式三,动态方式 -->
      <el-table-column
        v-for="(item, index) in tableHeader"
        :key="index"
        :label="item.labelName"
        :prop="item.propName"
        width="180"
        align="center"
        :render-header="renderheader"
      ></el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 动态数据表头就需要让后端返回来了,让其在需要换行的地方用逗号分隔开
      tableHeader: [
        {
          labelName: "型号001,价格(元)",
          propName: "typeOne",
        },
        {
          labelName: "型号002,价格(元)",
          propName: "typeTwo",
        },
      ],
      // 表体数据
      tableBody: [
        {
          id: "2021111101",
          toolName: "5G服务",
          supplier: "华为",
          supplierCountry: "中国",
          typeOne: "8888888",
          typeTwo: "9999999",
        },
        {
          id: "2021111101",
          toolName: "6G-SERVER",
          supplier: "中华有为",
          supplierCountry: "CHINA",
          typeOne: "678678678",
          typeTwo: "789789789",
        },
      ],
    };
  },
  methods: {
    labelFn() {
      // 在需要换行的地方加入换行符 \n  ,在搭配最底下的white-space样式设置
      return `供应商\n所属国家`;
    },

    // 饿了么UI的表头函数渲染方式,这种方式和表头插槽方式有点类似
    // 也是把表头的数据文字分割成两块,然后将内容渲染到两个div中(div自动换行)
    renderheader(h, { column, $index }) {
      return h("div", {}, [
        h("div", {}, column.label.split(",")[0]),
        h("div", {}, column.label.split(",")[1]),
      ]);
    },
    
  },
};
</script>
<style lang="less" scoped>
/deep/ .el-table th.el-table__cell > .cell {
  white-space: pre;
  // white-space: pre-wrap; // 也行。
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero0985

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值