09 - Vue3 UI Framework - Table 组件
2021-12-17 09:55
731 查看
接下来做个自定义的表格组件,即
table组件返回阅读列表点击 这里
需求分析
开始之前我们先做一个简单的需求分析
- 基于原生
table
标签的强语义 - 允许用户自定义表头、表体
- 可选是否具有边框
那么可以整理出以下参数表格
参数 | 含义 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
heads | 表头 | Array | 数组,每一项包含两个 string 字段:name、identifier | 必填 |
datas | 表数据 | Array | 数组,每一项包含与 heads 相同数量的 string 字段 | 必填 |
bordered | 是否有边框 | boolean | false / true | false |
骨架
容易得到如下骨架
实际上我们这里是根据
theme值判断,然后去渲染原生的
input或者
textarea组件,所以可以很容易得到骨架,代码如下:
<template> <table class="jeremy-table" :bordered="bordered"> <slot></slot> </table> </template>
功能
首先,我们再
Typescript中声明一些需求分析中的属性:
declare const props: { bordered: boolean; };
然后,再在
export default中写入声明的参数:
export default { install: function (Vue) { Vue.component(this.name, this); }, name: "JeremyTable", props: { bordered: { type: Boolean, default: false, }, }, };
样式表
补全层叠样式表
<style lang="scss"> .jeremy-table { width: 100%; text-align: left; border-spacing: 0; th, td { padding: 12px; } tbody { > tr { transition: background-color 250ms; &:nth-child(even) { background: rgb(247, 247, 247); } &:hover { background: #d3c8f5; } } } } .jeremy-table[bordered="true"] { border: 1px solid rgb(235, 235, 235); tr, th, td { border: 1px solid rgb(235, 235, 235); } } </style>
注意,当设置属性
bordered的时候,因为它不是DOM元素本有的属性,所以无论什么情况都会被添加,只不过值可能是false,但是disabled属性就没有这个问题,它为false值时不会绑定到DOM元素上,所以,此处属性选择器要写[bordered="true"]
测试
创建一个测试页,导入
JeremyTable组件,看一下效果:
项目地址 🎁
GitHub: https://github.com/JeremyWu917/jeremy-ui
官网地址 🌍
JeremyUI: https://ui.jeremywu.top
感谢阅读 ☕
相关文章推荐
- 10 - Vue3 UI Framework - Tabs 组件
- Ant Design中外部控制Table组件的sorter(后端真分页,排序)
- extjs_09_定义自己的页面组件
- iview框架中table组件详解
- JS组件系列之Bootstrap table表格组件神器【终结篇】
- Angular4_table组件
- JS表格组件神器bootstrap table详解(基础版)
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
- Android ApiDemos示例解析(164):Views->Layouts->TableLayout->09. Toggle Shrink
- react-table组件入门和在IE11上遇到的坑
- Vaadin系列(二) 应用开发:Table 组件
- JS组件系列——表格组件神器:bootstrap table
- ORM组件 ELinq (二) 映射配置之Table
- Table 组件使用指南之十八:自定义Date类型字段过滤器
- Vaadin Web应用开发教程 18 UI组件-Table 组件
- 解决ElementUI的Table组件固定列,在屏幕刚好够表格显示时,会出现固定列显示不全的问题
- 从零学React Native之09可触摸组件
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
- JS组件Bootstrap Table表格行拖拽效果实现代码
- 使用iReport设计器4.0.1的table组件导致尾页空白页问题解决