在目前大多数情况下,越来越多拥有开发团队的公司使用Vue作为他们的前端开发框架,我们不得不承认Vue这种模式在很多地方是优于传统项目的,但是相信很多人会和笔者一样,在使用过程中,事物总不是想象中那么美好,其中有一项就和今天的主角有关,在组件方面,以往jQuery的方式存在大量的第三方组件,能应对很多复杂的业务场景,就比如表格组件。虽然普通的表格能满足普通的开发需求,但是遇到复杂的就会显得捉襟见肘,今天就来说一说在Vue中相当好用的一个表格组件——vxe-table!
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、非常灵活的配置项、扩展接口等...
https://github.com/xuliangzhan/vxe-table(1.9k)
https://gitee.com/xuliangzhan_admin/vxe-table(800+k)
目前vxe-table已经来到3.x版本,以下是文档中所说明的功能,可以说是非常丰富了,基本上满足大多数复杂业务场景(比如说大型ERP系统,对于表格要求非常高的场景)
基础表格、高级表格、斑马线条纹、多种边框、单元格样式、列宽拖动、最大高度、自适应宽高、固定列、多级表头、表尾数据、高亮行、列、序号、单选框、复选框、下拉选项、开关、排序、筛选、合并行或列、导入、导出、打印、显示/隐藏列、加载中、格式化内容、自定义插槽/模板、快捷菜单、展开行、分页、表单、工具栏、下拉容器、虚拟列表、增删改查、树表格、数据校验、数据代理、键盘导航、模态窗口、渲染器、虚拟滚动
以下是其核心组件模块,且可以和国内主流组件框架适配
vex-table依赖库:vue 2.6+, xe-utils 2.4+,根据习惯使用npm或者yarn
npm install xe-utils vxe-table
import Vue from 'vue'
import 'xe-utils'
import VXETable from 'vxe-table'
import 'vxe-table/lib/index.css'
Vue.use(VXETable)
<template>
<div>
<vxe-table :data="tableData">
<vxe-table-column type="seq" title="排序" width="60"></vxe-table-column>
<vxe-table-column field="name" title="姓名"></vxe-table-column>
<vxe-table-column field="sex" title="性别"></vxe-table-column>
<vxe-table-column field="address" title="地址"></vxe-table-column>
</vxe-table>
</div>
</template>
<script>
export default {
data () {
return {
tableData: [
{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', address: 'Shenzhen' },
{ id: 10002, name: 'Test2', role: 'Test', sex: 'Man', address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', address: 'Shanghai' }
]
}
}
}
</script>
在3.0版本及以后不再支持IE,2.0以及之前版本支持所有主流浏览器
vxe-table确实是一个非常不错的表格组件,而且一直在不断的更新优化维护,感兴趣的小伙伴们可以直达仓库或者文档,伴有详细的使用指南和文档说明,开源不易,小伙伴们可以多多支持开发者,enjoy it!
lt;table>元素是HTML中最复杂的结构之一。要想创建表格,一般都必须涉及表示表格行、单元格、表头等方面的标签。由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量的代码。假设我们要使用DOM来创建下面的HTML表格。
<table border="1" width="100%">
<tbody>
<tr>
<td>Cell 1,1</td>
<td>Cell 2,1</td>
</tr>
<tr>
<td>Cell 1,2</td>
<td>Cell 2,2</td>
</tr>
</tbody>
</table>
要使用核心DOM方法创建这些元素,得需要像下面这么多的代码:
//创建table
var table=document.createElement("table");
table.border=1;
table.width="100%";
//创建tbody
var tbody=document.createElement("tbody");
table.appendChild(tbody);
//创建第一行
var row1=document.createElement("tr");
tbody.appendChild(row1);
var cell1_1=document.createElement("td");
cell1_1.appendChild(document.createTextNode("Cell 1,1"));
row1.appendChild(cell1_1);
var cell2_1=document.createElement("td");
cell2_1.appendChild(document.createTextNode("Cell 2,1"));
row1.appendChild(cell2_1);
//创建第二行
var row2=document.createElement("tr");
tbody.appendChild(row2);
var cell1_2=document.createElement("td");
cell1_2.appendChild(document.createTextNode("Cell 1,2"));
row2.appendChild(cell1_2);
var cell2_2=document.createElement("td");
cell2_2.appendChild(document.createTextNode("Cell 2,2"));
row2.appendChild(cell2_2);
//将表格添加到文档主体中
document.body.appendChild(table);
显然,DOM代码很长,还有点不太好懂。为了方便构建表格,HTML DOM还为<table>、<tbody>和<tr>元素添加了一些属性和方法。
为元素添加的属性和方法如下。
caption:保存着对<caption>元素(如果有)的指针。
tBodies:是一个<tbody>元素的HTMLCollection。
tFoot:保存着对<tfoot>元素(如果有)的指针。
tHead:保存着对<thead>元素(如果有)的指针。
rows:是一个表格中所有行的HTMLCollection。
createTHead():创建<thead>元素,将其放到表格中,返回引用。
createTFoot():创建<tfoot>元素,将其放到表格中,返回引用。
createCaption():创建<caption>元素,将其放到表格中,返回引用。
deleteTHead():删除<thead>元素。
deleteTFoot():删除<tfoot>元素。
deleteCaption():删除<caption>元素。
deleteRow(_pos_):删除指定位置的行。
insertRow(_pos_):向rows集合中的指定位置插入一行。
为<tbody>元素添加的属性和方法如下。
rows:保存着<tbody>元素中行的HTMLCollection。
deleteRow(pos):删除指定位置的行。
insertRow(pos):向rows集合中的指定位置插入一行,返回对新插入行的引用。
为<tr>元素添加的属性和方法如下。
cells:保存着<tr>元素中单元格的HTMLCollection。
deleteCell(pos):删除指定位置的单元格。
insertCell(pos):向cells集合中的指定位置插入一个单元格,返回对新插入单元格的引用。
使用这些属性和方法,可以极大地减少创建表格所需的代码数量。例如,使用这些属性和方法可以将前面的代码重写如下(加阴影的部分是重写后的代码)。
//创建table
var table=document.createElement("table");
table.border=1;
table.width="100%";
//创建tbody
var tbody=document.createElement("tbody");
table.appendChild(tbody);
//创建第一行tbody.insertRow(0);tbody.rows[0].insertCell(0);tbody.rows[0].cells[0].appendChild(document.createTextNode("Cell 1,1"));tbody.rows[0].insertCell(1);tbody.rows[0].cells[1].appendChild(document.createTextNode("Cell 2,1"));//创建第二行tbody.insertRow(1);tbody.rows[1].insertCell(0);tbody.rows[1].cells[0].appendChild(document.createTextNode("Cell 1,2"));tbody.rows[1].insertCell(1);tbody.rows[1].cells[1].appendChild(document.createTextNode("Cell 2,2"));
//将表格添加到文档主体中
document.body.appendChild(table);
在这次的代码中,创建<table>和<tbody>的代码没有变化。不同的是创建两行的部分,其中使用了HTML DOM定义的表格属性和方法。在创建第一行时,通过<tbody>元素调用了insertRow()方法,传入了参数0——表示应该将插入的行放在什么位置上。执行这一行代码后,就会自动创建一行并将其插入到<tbody>元素的位置0上,因此就可以马上通过tbody.rows[0]来引用新插入的行。
创建单元格的方式也十分相似,即通过<tr>元素调用insertCell()方法并传入放置单元格的位置。然后,就可以通过tbody.rows[0].cells[0]来引用新插入的单元格,因为新创建的单元格被插入到了这一行的位置0上。
总之,使用这些属性和方法创建表格的逻辑性更强,也更容易看懂,尽管技术上这两套代码都是正确的。
想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili
?
用于呈现逻辑上并列的具有相关性的数据内容.
<ul>
<li></li>
</ul>
disc: 实心圆点
circle: 空心圆圈
square: 实心正方形
<ol>
<li></li>
</ol>
1: 阿拉伯数字
i: 小写罗马数字
I: 大写罗马数字
A: 大写字母
a: 小写字母
适用呈现包含主题及描述的数据内容.
<dl>
<dt>主题</dt>
<dd>描述</dd>
</dl>
表格
<table>
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
thead: 表头
tbody: 表体
tfoot: 表脚
th: 专用于表头中的单元格, 其具有自动加粗并且居中的效果.
表格的属性控制:
border: 边框
bordercolor: 边框颜色
width: 宽度
height: 高度
cellspacing: 单元格间距(外)
cellpadding: 单元格填充(内)
align: 表格的位置控制
单元格的属性控制:
align
valign
如何合并单元格/跨行或跨列?
<td rowspan="number" colspan="number">
注意: 合并后, 会引发单元格数量的减少!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>我的电脑文件列表</h1>
<ul>
<li>我的电脑
<ul>
<li>本地磁盘(C:)
<ul>
<li>我的文档</li>
<li>我的收藏</li>
</ul>
</li>
<li>本地磁盘(D:)
<ul>
<li>我的游戏</li>
<li>我的资料</li>
<li>我的电影</li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
*请认真填写需求信息,我们会在24小时内与您取得联系。