接下来做个自定义的表格组件,即 table 组件

返回阅读列表点击 这里

需求分析

开始之前我们先做一个简单的需求分析

  1. 基于原生 table 标签的强语义
  2. 允许用户自定义表头、表体
  3. 可选是否具有边框

那么可以整理出以下参数表格

参数 含义 类型 可选值 默认值
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 组件的更多相关文章

  1. 05 - Vue3 UI Framework - Button 组件

    官网基本做好了,接下来开始做核心组件 返回阅读列表点击 这里 目录准备 在项目 src 目录下创建 lib 文件夹,用来存放所有的核心组件吧.然后再在 lib 文件夹下创建 Button.vue 文件 ...

  2. 06 - Vue3 UI Framework - Dialog 组件

    做完按钮之后,我们应该了解了遮罩层的概念,接下来我们来做 Dialog 组件! 返回阅读列表点击 这里 需求分析 默认是不可见的,在用户触发某个动作后变为可见 自带白板卡片,分为上中下三个区域,分别放 ...

  3. 08 - Vue3 UI Framework - Input 组件

    接下来再做一个常用的组件 - input 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 input 组件有两种类型,即 input 和 textarea 类型 当类型为 ...

  4. 10 - Vue3 UI Framework - Tabs 组件

    标签页是非常常用的组件,接下来我们来制作一个简单的 Tabs 组件 返回阅读列表点击 这里 需求分析 我们先做一个简单的需求分析 可以选择标签页排列的方向 选中的标签页应当有下划线高亮显示 切换选中时 ...

  5. 11 - Vue3 UI Framework - Card 组件

    卡片是非常常用也是非常重要的组件,特别是在移动端的众多应用场景中,随便打开一个手机 App ,您会发现充斥着各种各样的卡片. 所以,我们也来制作一个简易的 Card 组件 返回阅读列表点击 这里 需求 ...

  6. 00 - Vue3 UI Framework - 阅读辅助列表

    阅读列表 01 - Vue3 UI Framework - 开始 02 - Vue3 UI Framework - 顶部边栏 03 - Vue3 UI Framework - 首页 04 - Vue3 ...

  7. react ,ant Design UI中table组件合并单元格并展开详情的问题

    需求:购物车订单列表,如图: 一:单元格合并 遇到这种你会怎么办呢?  单元格合并?  还是其他的方法? 下面是我的处理方式,就是在table 组件的columns上处理,这里拿商品举例,其余的类似, ...

  8. 01 - Vue3 UI Framework - 开始

    写在前面 一年多没写过博客了,工作.生活逐渐磨平了棱角. 写代码容易,写博客难,坚持写高水平的技术博客更难. 技术控决定慢慢拾起这份坚持,用作技术学习的阶段性总结. 返回阅读列表点击 这里 开始 大前 ...

  9. 12 - Vue3 UI Framework - 打包发布

    基础组件库先做到这个阶段,后面我会继续新增.完善 接下来,我们对之前做的组件进行打包发布到 npm 返回阅读列表点击 这里 组件库优化 通用层叠样式表 我想大家都注意到了,前面我们在写组件的时候,sc ...

随机推荐

  1. dart系列之:创建Library package

    目录 简介 Library package的结构 导入library 条件导入和导出library 添加其他有效的文件 library的文档 发布到pub.dev 总结 简介 在dart系统中,有pu ...

  2. MySQL5.5.33对应的JDBC驱动包怎样使用?

    双击msi文件就会自动安装,然后找到安装路径下的jar,并把它加到类路径下,如手动编译和执行时javac -classpath c:\program files\...\mysql.jar;... m ...

  3. <C#任务导引教程>练习九

    //75,异常情况using System;class Program{    public static void Main()    {        Console.Write("请输 ...

  4. C#中指针的使用(转)

    在C#中,有时候希望通过指针来操作内存,这样可以提高效率.我们可以用unsafe关键字修饰含有指针操作的程序段,如下所示: class Program {   static int Main(stri ...

  5. [atARC107F]Sum of Abs

    价值即等价于给每一个点系数$p_{i}=\pm 1$,使得$\forall (x,y)\in E,p_{x}=p_{y}$的最大的$\sum_{i=1}^{n}p_{i}b_{i}$ 如果没有删除(当 ...

  6. MySQL 数据库的下载、安装和测试

    实例:Ubuntu 20.04 安装 mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar 1. 下载安装MySQL(安装 MySQL 5.7) ...

  7. 【GS文献】基因组选择技术在农业动物育种中的应用

    中国农业大学等多家单位2017年合作发表在<遗传>杂志上的综述,笔记之. 作者中还有李宁院士,不胜唏嘘. 1.概述 GS的两大难题:基因组分型的成本,基因组育种值(genomic esti ...

  8. Jvarkit : Java utilities for Bioinformatics

    Jvarkit : Java utilities for Bioinformatics :一个java写的生物信息工具包:http://lindenb.github.io/jvarkit/

  9. centos下Spin Version 6.3.2及ispin安装(2014.9.17)

    centos下Spin Version 6.3.2及ispin安装(2014.9.17) 前言:windos下首先安装虚拟机,再安装linux系统(centos版) 一.本帖来源于官网http://s ...

  10. SQL-Union、Union ALL合并两个或多个 SELECT 语句的结果集

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列 ...