004 封装表格样式模块

前言

之前咱们是已经封装了一个随机模块, 在这个随机模块中能够生成随机的用户信息, 并没有被用起来.

另外咱们还有一个想法, 那就是单独封装一个表格相关的样式模块, 也还没有实现.

所以,咱们继续开搞.

使用生成的随机用户数据

首先, 修改一下App.vue获取用户数据的逻辑, 使用随机数据.

arduino 复制代码
import random from "./zdpui/js/random.js";

let users = ref(random.users(8))

此时我们可以发现, 代码少了非常多, 然后去界面看看效果.

在这里插入图片描述

效果也非常的不错, 数据非常的真实.

此时App.vue完整代码如下:

xml 复制代码
<script setup>
import {onMounted, ref} from "vue";
import random from "./zdpui/js/random.js";

let users = ref(random.users(8))
</script>
<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(user, index) in users" :key="user.id">
        <td>{{ index + 1 }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>

<style scoped>
table {
  border-collapse: collapse;
  width: 100%;
  margin: 20px 0;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

thead {
  background: linear-gradient(to right, #00c6ff, #0072ff);
  color: white;
}

th {
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 12px;
  text-align: left;
}

tbody tr:nth-child(even) {
  background-color: #f3f4f6;
}

tbody tr:hover {
  background-color: #e5e7eb;
  transition: background-color 0.3s;
}

tbody td {
  padding: 12px;
  text-align: left;
  border-top: 1px solid #e5e7eb;
}

th, td {
  vertical-align: middle;
}
</style>

表格样式调整

为了便于封装统一的样式, 我们给这个表格样式取个名字, 就叫table1吧, 简单点, 意思就是我们的第一套表格样式.

我是取名鬼才,大家有想法的可以留言哈...

先个table加上样式:

ini 复制代码
<table class="table1">

然后在之前的所有样式前面加上一个层级, 表示是属于 table1 下面的样式:

css 复制代码
table.table1 {
  border-collapse: collapse;
  width: 100%;
  margin: 20px 0;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.table1 thead {
  background: linear-gradient(to right, #00c6ff, #0072ff);
  color: white;
}

.table1 th {
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 12px;
  text-align: left;
}

.table1 tbody tr:nth-child(even) {
  background-color: #f3f4f6;
}

.table1 tbody tr:hover {
  background-color: #e5e7eb;
  transition: background-color 0.3s;
}

.table1 tbody td {
  padding: 12px;
  text-align: left;
  border-top: 1px solid #e5e7eb;
}

.table1 th,
.table1 td {
  vertical-align: middle;
}

此时刷新页面, 确保样式没有变化:

在这里插入图片描述

封装表格样式模块

接下来, 我们就可以把这个样式代码抽离出来, 放到一个单独的css文件中了.

css 复制代码
/*表格样式1开始*/
table.table1 {
  border-collapse: collapse;
  width: 100%;
  margin: 20px 0;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.table1 thead {
  background: linear-gradient(to right, #00c6ff, #0072ff);
  color: white;
}

.table1 th {
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 12px;
  text-align: left;
}

.table1 tbody tr:nth-child(even) {
  background-color: #f3f4f6;
}

.table1 tbody tr:hover {
  background-color: #e5e7eb;
  transition: background-color 0.3s;
}

.table1 tbody td {
  padding: 12px;
  text-align: left;
  border-top: 1px solid #e5e7eb;
}

.table1 th,
.table1 td {
  vertical-align: middle;
}

/*表格样式1结束*/

此时, 我的项目结构是下面这样的:

在这里插入图片描述

使用封装的样式

接着我们回到App.vue, 只需要简单的引入css样式文件就行了.

arduino 复制代码
import "./zdpui/css/table.css";

此时App.vue的完整代码如下:

xml 复制代码
<script setup>
import {onMounted, ref} from "vue";
import random from "./zdpui/js/random.js";
import "./zdpui/css/table.css";

let users = ref(random.users(8))
</script>
<template>
  <div>
    <table class="table1">
      <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(user, index) in users" :key="user.id">
        <td>{{ index + 1 }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>

刷新浏览器, 可以发现, 整体样式还是没有变化:

在这里插入图片描述

说明我们封装得比较成功.

总结

到目前为止, 我们就把之前的两个想法实现了, 完美, 可惜我不喝酒, 不然和大家喝酒庆祝一下!!!

至少我自己是比较开心的, 虽然简单, 但是我封装了自己的第一个样式文件, 第一个js文件, 后面可以不断的复用, 而且是没有任何第三方依赖的, 非常的舒服.

这比较符合我自己的预期啊.

接下来, 就是将html代码封装为组件了.

我们需要将html代码封装到一个组件中,就是我们的表格组件, 这个组件接收我们传入的表格内容数据和表头数据, 进行渲染.

期待我们能尽快实现这个目标.

相关推荐
鹏程十八少9 分钟前
破解Android悬浮窗遮挡无障碍服务难题:我在可见即可说上踩过的坑
android·前端·面试
Kapaseker12 分钟前
前端已死...了吗
android·前端·javascript
m0_4711996316 分钟前
【自动化】前端开发,如何将 Jenkins 与 Gitee 结合实现自动化的持续集成(构建)和持续部署(发布)
前端·gitee·自动化·jenkins
w***954917 分钟前
spring-boot-starter和spring-boot-starter-web的关联
前端
Moment21 分钟前
富文本编辑器技术选型,到底是 Prosemirror 还是 Tiptap 好 ❓❓❓
前端·javascript·面试
xkxnq25 分钟前
第二阶段:Vue 组件化开发(第 18天)
前端·javascript·vue.js
晓得迷路了27 分钟前
栗子前端技术周刊第 112 期 - Rspack 1.7、2025 JS 新星榜单、HTML 状态调查...
前端·javascript·html
怕浪猫29 分钟前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
jinmo_C++30 分钟前
从零开始学前端 · HTML 基础篇(一):认识 HTML 与页面结构
前端·html·状态模式
鹏多多36 分钟前
前端2025年终总结:借着AI做大做强再创辉煌
前端·javascript