vue项目两种方式实现竖向表格的思路分析


Posted in Vue.js onApril 28, 2021

问题描述

在我们做项目中,常见的是横向表格,但是偶尔的需求,也会做竖向的表格。比如下图这样的竖向表格:

vue项目两种方式实现竖向表格的思路分析

我们看到这样的效果图,第一时间想到的是使用UI框架,改一改搞定。但是饿了么UI并没有直接提供这样的案例,部分同学会想着使用饿了么UI中的el-table的合并行、合并列的方式去实现,其实如果这样去做的话,反而做麻烦了。比如下面的合并行合并列:

vue项目两种方式实现竖向表格的思路分析

类似于这样的效果图,其实并不一定非得使用UI组件,有的时候使用原生的方式去做。反而会更方便。本文介绍两种方式去实现这样的简单的竖向表格。实际场景中可能会更加复杂,但是还是那句话,只要有思路,就不是大问题。做编程,关键是思路:

方式一(原生方式)不太推荐

思路就是:表格样式自己画,使用浮动从左往右依次排开

<template>
  <div id="app">
    <ul class="proWrap">
      <template v-for="(item, index) in data">
        <li class="proItem" :key="index">
          <span>{{ item.title }}</span>
          <span>{{ item.value == "" ? "待完善" : item.value }}</span>
        </li>
      </template>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: [
        {
          title: "重要级别",
          value: "666",
        },
        {
          title: "售前状态",
          value: "666",
        },
        {
          title: "配合状态",
          value: "",
        },
        {
          title: "售前状态",
          value: "",
        },
        {
          title: "技术协议状态",
          value: "",
        },
        {
          title: "中标厂家",
          value: "",
        },
        {
          title: "配合状态",
          value: "",
        },
        {
          title: "配合反馈时间",
          value: "",
        },
      ],
    };
  },
  methods: {},
};
</script>

<style lang="less" scoped>
#app {
  width: 100%;
  min-height: 100vh;
  box-sizing: border-box;
  padding: 50px;
  .proWrap {
    width: 100%;
    border: 1px solid #e9e9e9;
    border-right: 0;
    border-bottom: 0;
    // 每行放几组,这里就除于几
    .proItem {
      width: 100% / 3;
      float: left; // 向左浮动,
      span {
        display: inline-block;
        width: calc(50% - 2px);
        height: 50px;
        line-height: 50px;
        text-align: center;
        border-right: 1px solid #e9e9e9;
        border-bottom: 1px solid #e9e9e9;
      }
      span:nth-child(1) {
        background: #fafafa;
      }
    }
    // 清除浮动,不清除会导致最左侧的边框消失
    &::after {
      content: "";
      display: block;
      clear: both;
    }
  }
}
// 去掉li的默认样式
li {
  list-style-type: none;
}
</style>

方式二(使用栅格布局组件)推荐

使用饿了么自带的栅格系统会方便一些,我们可以如果通过控制el-col的:span属性来设置每行出现几组,多了就自动换行。至于表格的样式,我们自己设置即可。这种方式很简单。代码附上:

<template>
  <div id="app">
    <el-col :span="howWidth" v-for="(item, index) in tableArr" :key="index">
      <div class="box">
        <div class="content1">{{ item.key }}</div>
        <div class="content2">{{ item.value == "" ? "待完善" : item.value }}</div>
      </div>
    </el-col>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableArr: [
        {
          key: "姓名",
          value: "孙悟空",
        },
        {
          key: "年龄",
          value: 500,
        },
        {
          key: "身高",
          value: "山一样高",
        },
        {
          key: "性别",
          value: "男",
        },
        {
          key: "住址",
          value: "花果山水帘洞",
        },
        {
          key: "学历",
          value: "天庭弼马温学历",
        },
        {
          key: "能力",
          value: "强",
        },
        {
          key: "外号",
          value: "齐天大圣",
        },
      ],
      howWidth: 8,
    };
  },
  methods: {},
};
</script>

<style lang="less" scoped>
#app {
  width: 100%;
  min-height: 100vh;
  box-sizing: border-box;
  padding: 50px;
  .box {
    width: 100%;
    height: 40px;
    display: flex;
    border-left: 1px solid #e9e9e9;
    border-top: 1px solid #e9e9e9;
    .content1 {
      width: 40%;
      height: 40px;
      line-height: 40px;
      text-align: center;
      background-color: #fafafa;
      border-right: 1px solid #e9e9e9;
      border-bottom: 1px solid #e9e9e9;
      color: #333;
      font-size: 14px;
    }
    .content2 {
      width: 60%;
      height: 40px;
      line-height: 40px;
      text-align: center;
      background-color: #fff;
      border-right: 1px solid #e9e9e9;
      border-bottom: 1px solid #e9e9e9;
      color: #b0b0b2;
      font-size: 14px;
    }
  }
}
</style>

到此这篇关于vue项目两种方式实现竖向表格的思路分析 的文章就介绍到这了,更多相关vue 竖向表格内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
详解Vue中的自定义指令
Dec 07 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
vue2的 router在使用过程中遇到的一些问题
Apr 13 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 Vue.js
vue首次渲染全过程
浅谈vue2的$refs在vue3组合式API中的替代方法
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
vue backtop组件的实现完整代码
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
vue3中的组件间通信
vue前端工程的搭建
You might like
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
python日期相关操作实例小结
2019/06/24 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
悦木之源美国官网:Origins美国
2016/08/01 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
大学生求职意向书
2015/05/11 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis