如何使用 Vue3 构建一个响应式表格

46 阅读3分钟

Alt

本文由ScriptEcho平台提供技术支持

项目地址:传送门

代码技术博客

应用场景

该代码用于创建一个带有头像、姓名、状态、角色、团队以及操作按钮的表格行。它适用于需要展示个人资料或团队成员信息的应用程序或网站。

基本功能

该代码段创建了一个带有以下功能的表格行:

  • **头像:**圆形头像,带有状态指示器(在线或离线)。
  • **姓名:**用户的全名和电子邮件地址。
  • **状态:**用户当前的状态(例如,活动、空闲)。
  • **角色:**用户的角色或职务。
  • **团队:**用户所属的团队。
  • **操作按钮:**编辑和删除按钮,用于执行相应的操作。

功能实现步骤及关键代码分析

步骤 1:创建表格行元素

<tr class="hover:bg-gray-50">
  ...
</tr>

步骤 2:添加头像和姓名

<th class="flex gap-3 px-6 py-4 font-normal text-gray-900">
  <div class="relative h-10 w-10">
    <img
      class="h-full w-full rounded-full object-cover object-center"
      src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=facearea&amp;facepad=2&amp;w=256&amp;h=256&amp;q=80"
      alt=""
    />
    <span
      class="absolute right-0 bottom-0 h-2 w-2 rounded-full bg-green-400 ring ring-white"
    ></span>
  </div>
  <div class="text-sm">
    <div class="font-medium text-gray-700">Steven Jobs</div>
    <div class="text-gray-400">jobs@sailboatui.com</div>
  </div>
</th>

步骤 3:添加状态

<td class="px-6 py-4">
  <span
    class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-semibold text-green-600"
  >
    <span class="h-1.5 w-1.5 rounded-full bg-green-600"></span>
    Active
  </span>
</td>

步骤 4:添加角色和团队

<td class="px-6 py-4">Product Designer</td>
<td class="px-6 py-4">
  <div class="flex gap-2">
    <span
      class="inline-flex items-center gap-1 rounded-full bg-blue-50 px-2 py-1 text-xs font-semibold text-blue-600"
    >
      Design
    </span>
    <span
      class="inline-flex items-center gap-1 rounded-full bg-indigo-50 px-2 py-1 text-xs font-semibold text-indigo-600"
    >
      Product
    </span>
    <span
      class="inline-flex items-center gap-1 rounded-full bg-violet-50 px-2 py-1 text-xs font-semibold text-violet-600"
    >
      Develop
    </span>
  </div>
</td>

步骤 5:添加操作按钮

<td class="px-6 py-4">
  <div class="flex justify-end gap-4">
    <a x-data="{ tooltip: 'Delete' }" href="#">
      <svg
        xmlns="http://www.w3.org/2000/svg"
        fill="none"
        viewBox="0 0 24 24"
        stroke-width="1.5"
        stroke="currentColor"
        class="h-6 w-6"
        x-tooltip="tooltip"
      >
        <path
          stroke-linecap="round"
          stroke-linejoin="round"
          d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
        ></path>
      </svg>
    </a>
    <a x-data="{ tooltip: 'Edite' }" href="#">
      <svg
        xmlns="http://www.w3.org/2000/svg"
        fill="none"
        viewBox="0 0 24 24"
        stroke-width="1.5"
        stroke="currentColor"
        class="h-6 w-6"
        x-tooltip="tooltip"
      >
        <path
          stroke-linecap="round"
          stroke-linejoin="round"
          d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125"
        ></path>
      </svg>
    </a>
  </div>
</td>

总结与展望

开发经验和收获:

  • 掌握了使用 HTML、CSS 和 Tailwind CSS 创建表格行的技巧。
  • 了解了如何使用 Alpine.js 添加交互性(例如,工具提示)。

卡片功能的拓展与优化:

  • 添加排序和过滤功能。

  • 支持多选操作。

  • 集成后端数据源以动态加载数据。

  • 优化响应式布局以适应不同的屏幕尺寸。

    更多组件:

获取更多Echos

本文由ScriptEcho平台提供技术支持

项目地址:传送门

微信搜索ScriptEcho了解更多