09 - Vue3 UI Framework - Table 组件
接下来做个自定义的表格组件,即
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
感谢阅读
09 - Vue3 UI Framework - Table 组件的更多相关文章
- 05 - Vue3 UI Framework - Button 组件
官网基本做好了,接下来开始做核心组件 返回阅读列表点击 这里 目录准备 在项目 src 目录下创建 lib 文件夹,用来存放所有的核心组件吧.然后再在 lib 文件夹下创建 Button.vue 文件 ...
- 06 - Vue3 UI Framework - Dialog 组件
做完按钮之后,我们应该了解了遮罩层的概念,接下来我们来做 Dialog 组件! 返回阅读列表点击 这里 需求分析 默认是不可见的,在用户触发某个动作后变为可见 自带白板卡片,分为上中下三个区域,分别放 ...
- 08 - Vue3 UI Framework - Input 组件
接下来再做一个常用的组件 - input 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 input 组件有两种类型,即 input 和 textarea 类型 当类型为 ...
- 10 - Vue3 UI Framework - Tabs 组件
标签页是非常常用的组件,接下来我们来制作一个简单的 Tabs 组件 返回阅读列表点击 这里 需求分析 我们先做一个简单的需求分析 可以选择标签页排列的方向 选中的标签页应当有下划线高亮显示 切换选中时 ...
- 11 - Vue3 UI Framework - Card 组件
卡片是非常常用也是非常重要的组件,特别是在移动端的众多应用场景中,随便打开一个手机 App ,您会发现充斥着各种各样的卡片. 所以,我们也来制作一个简易的 Card 组件 返回阅读列表点击 这里 需求 ...
- 00 - Vue3 UI Framework - 阅读辅助列表
阅读列表 01 - Vue3 UI Framework - 开始 02 - Vue3 UI Framework - 顶部边栏 03 - Vue3 UI Framework - 首页 04 - Vue3 ...
- react ,ant Design UI中table组件合并单元格并展开详情的问题
需求:购物车订单列表,如图: 一:单元格合并 遇到这种你会怎么办呢? 单元格合并? 还是其他的方法? 下面是我的处理方式,就是在table 组件的columns上处理,这里拿商品举例,其余的类似, ...
- 01 - Vue3 UI Framework - 开始
写在前面 一年多没写过博客了,工作.生活逐渐磨平了棱角. 写代码容易,写博客难,坚持写高水平的技术博客更难. 技术控决定慢慢拾起这份坚持,用作技术学习的阶段性总结. 返回阅读列表点击 这里 开始 大前 ...
- 12 - Vue3 UI Framework - 打包发布
基础组件库先做到这个阶段,后面我会继续新增.完善 接下来,我们对之前做的组件进行打包发布到 npm 返回阅读列表点击 这里 组件库优化 通用层叠样式表 我想大家都注意到了,前面我们在写组件的时候,sc ...
随机推荐
- 接口返回图片,前端生成临时url实现展示、下载效果
请求一个后端接口 返回一张图片(打印后发现是二进制流) 瞬间不开心了(为什么不能后端处理好再让前端调用呢) 不过丝毫不慌好吧 先说处理逻辑:首先要将获取到的数据转换,这边选择以blob形式进行转换 主 ...
- 简易发号SQL,可用于生成指定前缀自增序列--改进版
使用merge语法实现新增or更新 首先创建表 CREATE TABLE Test.dbo.Increments ( Prefix varchar(50) NOT NULL, [MaxNum ] bi ...
- [hdu7099]Just Another Data Structure Problem
不难发现,问题即求满足以下条件的$(i,j)$对数: 1.$1\le i<j\le n$且$a_{i}=a_{j}$ 2.$\min_{i\le k\le j}y_{k}\ge l$且$\max ...
- [atAGC014E]Blue and Red Tree
不断删除重边,然后将两个点的边集启发式合并(要考虑到两棵树),合并时发现重边就加入队列,最后判断是否全部删完即可 1 #include<bits/stdc++.h> 2 using nam ...
- WinRAR下载
https://www.win-rar.com 垃圾7Z有的解压不了.
- 解决WSL2中Vmmem内存占用过大问题教程
Windows的linux子系统最大占用可到本机器的80%,所以必须限制一下它的性能来达到优化目的 按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹 新建文件 . ...
- bootstrap导入报错
- vue-cli的安装步骤
1.安装Node.js 在Node.js官网 https://nodejs.org/zh-cn/下载安装包,修改安装路径到其它盘,如 G:\Program Files 2.设置 cnpm的下载路径和缓 ...
- Discontinuous Galerkin method for steady transport problem
下面讨论如何使用 Discontinuous Galerkin 求解恒定对流问题. 1.简介 恒定状态对流方程 \[\begin{equation} a\cdot \nabla \mathbf{u} ...
- Docker 外部访问容器Pp、数据管理volume、网络network 介绍
Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...