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代码封装到一个组件中,就是我们的表格组件, 这个组件接收我们传入的表格内容数据和表头数据, 进行渲染.

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

相关推荐
tedcloud1231 小时前
UI-TARS-desktop部署教程:构建AI桌面自动化系统
服务器·前端·人工智能·ui·自动化·github
UXbot4 小时前
AI原型设计工具如何支持团队协作与快速迭代
前端·交互·个人开发·ai编程·原型模式
ZC跨境爬虫5 小时前
跟着MDN学HTML_day_48:(Node接口)
前端·javascript·ui·html·音视频
PieroPc6 小时前
CAMWATCH — 局域网摄像头监控系统 Fastapi + html
前端·python·html·fastapi·监控
巴巴博一8 小时前
2026 最新:Trae / Cursor 一键接入 taste-skill 完整教程(让 AI 前端告别“AI 味”)
前端·ai·ai编程
kyriewen8 小时前
半夜三点线上崩了,AI替我背了锅——用AI排错,五分钟定位三年老bug
前端·javascript·ai编程
kyriewen8 小时前
我让 AI 当了 24 小时全年无休的“毒舌考官”
前端·ci/cd·ai编程
hexu_blog8 小时前
vue+java实现图片批量压缩
java·前端·vue.js
IT_陈寒9 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端