vue、element实现表格表头纵向显示

1 篇文章 0 订阅
1 篇文章 0 订阅

 

大多数情况,我们的管理端都有表格展示数据,然而表格的展示基本都是表头横向展示,然后相应的数据一行一行排列在下方,我们先看一下element官网的el-table的样子:

那么我们如果想要让表头纵向展示该如何实现呢?怎么样?是不是发现element官网没有这样的示例,有点难搞,哈哈,接下来咱们就来现场撸纵向表格展示,准备好了吗?

其实原理很简单,一般的都是横向展示,先定义第一行表头,然后数据部分直接放在一个数组中进行排序就可以渲染了,那么我们根据这个思路启发一下:纵向表头是不是也可以如此?那当然了,我们可以先定义一个纵向的表头,再按照一列一列来进行渲染表格数据,那么按照列来写表头,我们就可以使用table来进行了

我们先来处理表头:

<table width="100%">
     <tr><td class="black_title">对比项</td></tr>
     <tr><td class="left_title bottom_border">表头1</td></tr>
     <tr><td class="left_title bottom_border">表头2</td></tr>
     <tr><td class="left_title bottom_border">表头3</td></tr>
     <tr><td class="left_title bottom_border">表头4</td></tr>
     <tr><td class="left_title bottom_border">表头5</td></tr>
     <tr><td class="left_title bottom_border">表头6</td></tr>
     <tr><td class="left_title bottom_border">表头7</td></tr>
     <tr><td class="left_title bottom_border">表头8</td></tr>
     <tr><td class="left_title bottom_border">表头9</td></tr>
     <tr><td class="left_title bottom_border">表头10</td></tr>
     <tr><td class="left_title bottom_border">。。。</td></tr>
</table>

 其中我们只需要设置好每个单元格的样式,然后我们就可以复制这样的table了,只不过我们可以根据我们的数据来动态添加table

<div v-for="(item, index) in tableData" :key="index">
                    <table width="100%">
                        <tr><td class="black_title">{{item.val1}}</td></tr>
                        <tr><td class="td_content">{{item.val2}}</td></tr>
                        <tr><td class="td_content">{{item.val3}}</td></tr>
                        <tr><td class="td_content">{{item.val4}}</td></tr>
                        <tr><td class="td_content">{{item.val5}}</td></tr>
                        <tr><td class="td_content">{{item.val6}}</td></tr>
                        <tr><td class="td_content">{{item.val7}}</td></tr>
                        <tr><td class="time_comtent">{{item.val8}}</td></tr>
                        <tr><td class="td_content">{{item.val9}}</td></tr>
                        <tr><td class="td_content">{{item.val10}}</td></tr>
                        <tr><td class="td_content">{{item.val11}}</td></tr>
                    </table>
                </div>

主体思路已经OK了,那么 这样就能够说可以达到要求吗?不行的,我们还得加上样式上的要求!!!

那么这里我推荐使用flex布局,不是很清楚flex布局的可以先移步相关百度flex布局样式介绍。我们可以这样来一个思路,比如定义一个大的div用来装我们需要展示的表格,然后div里面一列就是一个table也用div进行包裹,那么用上flex布局就可以动态摆放这些div达到我们想要的效果:

<div class="" style="width:100%;display:flex;justify-content: space-between;">
                <div style="width:15%;box-shadow: 0 0 2px #000;">
                    <table width="100%">
                        //这里是表头的table
                    </table>
                </div>
                <div v-for="(item, index) in tableData" :key="index" :style="'width:'+ calcWidth(tableData)+';box-shadow: 0 0 2px #000;'">
                    <table width="100%">
                        //这里是内容的table
                    </table>
                </div>
            </div>

 

 当然我这里自己样式的css有进行设置,大家可根据自身要求进行设置,也可以加一些el-button和点击事件的元素在里面

头部纵向展示有一个缺点:不能有太多数据进行展示对比,只能用于少数数据展示对比,不过这样看上去数据对比也会更明显

怎么样?是不是看完之后也想自己动手实现啊?其实还是蛮简单的对吧,go & di it! 

 

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值