DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例12,TableView16_12 拖拽动画示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕


目录


📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例12,TableView16_12 拖拽动画示例

📚前言

DeepSeek 在 Transformer 架构的基础上进行了多项创新改进。在注意力计算方面,面对大规模数据处理时传统注意力计算方式计算量剧增和内存消耗过大的瓶颈,DeepSeek 引入了稀疏注意力(Sparse Attention)或基于位置的注意力(Position - based Attention)等新型算法。这些算法能够巧妙地减少不必要的计算量,在确保模型性能不受影响的前提下,大幅提升训练和推理的速度,使模型能够更加高效地处理海量数据。在处理长文本时,稀疏注意力算法可以只关注文本中的关键部分,忽略一些不重要的信息,从而减少计算量和内存占用,同时保持对文本主要内容的准确理解。

📚页面效果

📘组件代码

html 复制代码
<!-- TableView16_12.vue 拖拽动画示例 -->
<template>
  <div class="drag-demo">
    <h2>12. 拖拽动画效果</h2>
    <p class="description">使用CSS动画增强拖拽排序的视觉效果</p>
    
    <div class="animation-options">
      <div class="option">
        <input type="checkbox" id="enableFloating" v-model="enableFloating">
        <label for="enableFloating">浮动效果</label>
      </div>
      <div class="option">
        <input type="checkbox" id="enableScale" v-model="enableScale">
        <label for="enableScale">缩放效果</label>
      </div>
      <div class="option">
        <input type="checkbox" id="enableShadow" v-model="enableShadow">
        <label for="enableShadow">阴影效果</label>
      </div>
      <div class="option">
        <input type="checkbox" id="enableHighlight" v-model="enableHighlight">
        <label for="enableHighlight">高亮效果</label>
      </div>
    </div>
    
    <Table
      :data="taskList"
      :columns="columns"
      draggable
      @update:data="handleDataUpdate"
      row-key="id"
      border
      :class="{
        'animate-floating': enableFloating,
        'animate-scale': enableScale,
        'animate-shadow': enableShadow,
        'animate-highlight': enableHighlight
      }"
    />
  </div>
</template>

<script setup>
import { ref } from 'vue'
import Table from '@/components/Table/Table.vue'

const taskList = ref([
  { id: 1, task: '需求分析', priority: '高', status: '进行中' },
  { id: 2, task: '原型设计', priority: '中', status: '待处理' },
  { id: 3, task: 'UI设计', priority: '高', status: '待处理' },
  { id: 4, task: '前端开发', priority: '高', status: '未开始' },
  { id: 5, task: '后端开发', priority: '高', status: '未开始' },
  { id: 6, task: '单元测试', priority: '中', status: '未开始' },
  { id: 7, task: '集成测试', priority: '中', status: '未开始' },
  { id: 8, task: '验收测试', priority: '低', status: '未开始' },
])

const columns = [
  { title: '任务', dataIndex: 'task', width: '200px' },
  { title: '优先级', dataIndex: 'priority', width: '100px' },
  { title: '状态', dataIndex: 'status', width: '120px' }
]

// 动画效果选项
const enableFloating = ref(true)
const enableScale = ref(true)
const enableShadow = ref(true)
const enableHighlight = ref(true)

const handleDataUpdate = (newData) => {
  taskList.value = newData
}
</script>

<style scoped>
.drag-demo {
  padding: 20px;
  max-width: 800px;
  margin: 0 auto;
}

.description {
  margin-bottom: 16px;
  color: #666;
}

.animation-options {
  display: flex;
  gap: 16px;
  margin-bottom: 20px;
  padding: 16px;
  background: #f8f8f8;
  border-radius: 4px;
  flex-wrap: wrap;
}

.option {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* 拖拽动画效果 */
.animate-floating :deep(tr.dragging) {
  transform: translateY(-5px);
}

.animate-scale :deep(tr.dragging) {
  transform: scale(1.02);
}

.animate-shadow :deep(tr.dragging) {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  z-index: 100;
}

.animate-highlight :deep(tr.dragging) {
  background-color: #e6f7ff !important;
  border-color: #91d5ff;
}

:deep(tr[draggable="true"]) {
  transition: transform 0.2s, box-shadow 0.2s, background-color 0.2s;
  cursor: move;
}

:deep(.drop-placeholder) {
  height: 3px;
  background: #1890ff;
  border-radius: 2px;
  animation: pulse 1.5s infinite ease-in-out;
}

@keyframes pulse {
  0%, 100% { opacity: 0.5; height: 3px; }
  50% { opacity: 1; height: 5px; }
}
</style>

📚代码测试

运行正常

📚测试代码正常跑通,附其他基本代码

  • 添加路由
  • 页面展示入口

📘编写路由 src\router\index.js

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'
import RightClickMenuView from '../views/RightClickMenuView.vue'
import RangePickerView from '../views/RangePickerView.vue'


const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'progress',
      component:  () => import('../views/ProgressView.vue'),
    },
    {
      path: '/tabs',
      name: 'tabs',
      // route level code-splitting
      // this generates a separate chunk (About.[hash].js) for this route
      // which is lazy-loaded when the route is visited.
      // 标签页(Tabs)
      component: () => import('../views/TabsView.vue'),
    },
    {
      path: '/accordion',
      name: 'accordion',
      // 折叠面板(Accordion)
      component: () => import('../views/AccordionView.vue'),
    },
    {
      path: '/timeline',
      name: 'timeline',
      // 时间线(Timeline)
      component: () => import('../views/TimelineView.vue'),
    },
    {
      path: '/backToTop',
      name: 'backToTop',
      component: () => import('../views/BackToTopView.vue')
    },
    {
      path: '/notification',
      name: 'notification',
      component: () => import('../views/NotificationView.vue')
    },
    {
      path: '/card',
      name: 'card',
      component: () => import('../views/CardView.vue')
    },
    {
      path: '/infiniteScroll',
      name: 'infiniteScroll',
      component: () => import('../views/InfiniteScrollView.vue')
    },
    {
      path: '/switch',
      name: 'switch',
      component: () => import('../views/SwitchView.vue')
    },
    {
      path: '/sidebar',
      name: 'sidebar',
      component: () => import('../views/SidebarView.vue')
    },
    {
      path: '/breadcrumbs',
      name: 'breadcrumbs',
      component: () => import('../views/BreadcrumbsView.vue')
    },
    {
      path: '/masonryLayout',
      name: 'masonryLayout',
      component: () => import('../views/MasonryLayoutView.vue')
    },
    {
      path: '/rating',
      name: 'rating',
      component: () => import('../views/RatingView.vue')
    },
    {
      path: '/datePicker',
      name: 'datePicker',
      component: () => import('../views/DatePickerView.vue')
    },
    {
      path: '/colorPicker',
      name: 'colorPicker',
      component: () => import('../views/ColorPickerView.vue')
    },
    {
      path: '/rightClickMenu',
      name: 'rightClickMenu',
      component: RightClickMenuView
    },
    {
      path: '/rangePicker',
      name: 'rangePicker',
      component: () => import('../views/RangePickerView.vue')
    },
    {
      path: '/navbar',
      name: 'navbar',
      component: () => import('../views/NavbarView.vue')
    },
    {
      path: '/formValidation',
      name: 'formValidation',
      component: () => import('../views/FormValidationView.vue')
    },
    {
      path: '/copyToClipboard',
      name: 'copyToClipboard',
      component: () => import('../views/CopyToClipboardView.vue')
    },
    {
      path: '/clickAnimations',
      name: 'clickAnimations',
      component: () => import('../views/ClickAnimationsView.vue')
    },
    {
      path: '/thumbnailList',
      name: 'thumbnailList',
      component: () => import('../views/ThumbnailListView.vue')
    },
    {
      path: '/keyboardShortcuts',
      name: 'keyboardShortcuts',
      component: () => import('../views/KeyboardShortcutsView.vue')
    },
    {
      path: '/commentSystem',
      name: 'commentSystem',
      component: () => import('../views/CommentSystemView.vue')
    },
    {
      path: '/qRCode',
      name: 'qRCode',
      component: () => import('../views/QRCodeView.vue')
    },
    {
      path: '/radioButton',
      name: 'radioButton',
      component: () => import('../views/RadioButtonView.vue')
    },
    {
      path: '/slider',
      name: 'slider',
      component: () => import('../views/SliderView.vue')
    },
    {
      path: '/scrollAnimations',
      name: 'scrollAnimations',
      component: () => import('../views/ScrollAnimationsView.vue')
    },
    {
      path: '/textInputView',
      name: 'textInputView',
      component: () => import('../views/TextInputView.vue')
    },
    {
      path: '/divider',
      name: 'divider',
      component: () => import('../views/DividerView.vue')
    },
    {
      path: '/checkbox',
      name: 'checkbox',
      component: () => import('../views/CheckboxView.vue')
    },
    {
      path: '/tagInput',
      name: 'tagInput',
      component: () => import('../views/TagInputView.vue')
    },
    {
      path: '/dropdownSelect',
      name: 'dropdownSelect',
      component: () => import('../views/DropdownSelectView.vue')
    },
    {
      path: '/list',
      name: 'list',
      component: () => import('../views/ListView.vue')
    },
    {
      path: '/header',
      name: 'header',
      component: () => import('../views/HeaderView.vue')
    },
    {
      path: '/footer',
      name: 'footer',
      component: () => import('../views/FooterView.vue')
    },
    {
      path: '/pagination',
      name: 'pagination',
      component: () => import('../views/PaginationView.vue')
    },
    {
      path: '/floatingActionButton',
      name: 'floatingActionButton',
      component: () => import('../views/FloatingActionButtonView.vue')
    },
    {
      path: '/gridLayout',
      name: 'gridLayout',
      component: () => import('../views/GridLayoutView.vue')
    },
    {
      path: '/passwordInput',
      name: 'passwordInput',
      component: () => import('../views/PasswordInputView.vue')
    },
    {
      path: '/flexbox',
      name: 'flexbox',
      component: () => import('../views/FlexboxView.vue')
    },
    {
      path: '/modal',
      name: 'modal',
      component: () => import('../views/ModalView.vue')
    },
    {
      path: '/richTextEditor',
      name: 'richTextEditor',
      component: () => import('../views/RichTextEditorView.vue')
    },
    {
      path: '/timePickerView',
      name: 'timePickerView',
      component: () => import('../views/TimePickerView.vue')
    },
    {
      path: '/multistepForm',
      name: 'multistepForm',
      component: () => import('../views/MultistepFormView.vue')
    },
    {
      path: '/table1',
      name: 'table1',
      component: () => import('../views/TableView1.vue')
    },
    {
      path: '/table2',
      name: 'table2',
      component: () => import('../views/TableView2.vue')
    },
    {
      path: '/table3',
      name: 'table3',
      component: () => import('../views/TableView3.vue')
    },
    {
      path: '/table4',
      name: 'table4',
      component: () => import('../views/TableView4.vue')
    },
    {
      path: '/table5',
      name: 'table5',
      component: () => import('../views/TableView5.vue')
    },
    {
      path: '/table6',
      name: 'table6',
      component: () => import('../views/TableView6.vue')
    },
    {
      path: '/table7',
      name: 'table7',
      component: () => import('../views/TableView7.vue')
    },
    {
      path: '/table8',
      name: 'table8',
      component: () => import('../views/TableView8.vue')
    },
    {
      path: '/table9',
      name: 'table9',
      component: () => import('../views/TableView9.vue')
    },
    {
      path: '/table10',
      name: 'table10',
      component: () => import('../views/TableView10.vue')
    },
    {
      path: '/table11',
      name: 'table11',
      component: () => import('../views/TableView11.vue')
    },
    {
      path: '/table12',
      name: 'table12',
      component: () => import('../views/TableView12.vue')
    },
    {
      path: '/table12_02',
      name: 'table12_02',
      component: () => import('../views/TableView12_02.vue')
    },
    {
      path: '/table14',
      name: 'table14',
      component: () => import('../views/TableView14.vue')
    },
    {
      path: '/table14_01',
      name: 'table14_01',
      component: () => import('../views/TableView14_01.vue')
    },
    {
      path: '/table14_02',
      name: 'table14_02',
      component: () => import('../views/TableView14_02.vue')
    },
    {
      path: '/table14_03',
      name: 'table14_03',
      component: () => import('../views/TableView14_03.vue')
    },
    {
      path: '/table14_04',
      name: 'table14_04',
      component: () => import('../views/TableView14_04.vue')
    },
    {
      path: '/table14_05',
      name: 'table14_05',
      component: () => import('../views/TableView14_05.vue')
    },
    {
      path: '/table14_06',
      name: 'table14_06',
      component: () => import('../views/TableView14_06.vue')
    },
    {
      path: '/table14_07',
      name: 'table14_07',
      component: () => import('../views/TableView14_07.vue')
    },
    {
      path: '/table14_08',
      name: 'table14_08',
      component: () => import('../views/TableView14_08.vue')
    },
    {
      path: '/table14_09',
      name: 'table14_09',
      component: () => import('../views/TableView14_09.vue')
    },
    {
      path: '/table14_10',
      name: 'table14_10',
      component: () => import('../views/TableView14_10.vue')
    },
    {
      path: '/table14_11',
      name: 'table14_11',
      component: () => import('../views/TableView14_11.vue')
    },
    {
      path: '/table14_12',
      name: 'table14_12',
      component: () => import('../views/TableView14_12.vue')
    },
    {
      path: '/table14_13',
      name: 'table14_13',
      component: () => import('../views/TableView14_13.vue')
    },
    {
      path: '/table14_14',
      name: 'table14_14',
      component: () => import('../views/TableView14_14.vue')
    },
    {
      path: '/table15',
      name: 'table15',
      component: () => import('../views/TableView15.vue')
    },
    {
      path: '/table15_01',
      name: 'table15_01',
      component: () => import('../views/TableView15_01.vue')
    },
    {
      path: '/table15_02',
      name: 'table15_02',
      component: () => import('../views/TableView15_02.vue')
    },
    {
      path: '/table15_03',
      name: 'table15_03',
      component: () => import('../views/TableView15_03.vue')
    },
    {
      path: '/table15_04',
      name: 'table15_04',
      component: () => import('../views/TableView15_04.vue')
    },
    {
      path: '/table15_05',
      name: 'table15_05',
      component: () => import('../views/TableView15_05.vue')
    },
    {
      path: '/table15_06',
      name: 'table15_06',
      component: () => import('../views/TableView15_06.vue')
    },
    {
      path: '/table15_07',
      name: 'table15_07',
      component: () => import('../views/TableView15_07.vue')
    },
    {
      path: '/table15_08',
      name: 'table15_08',
      component: () => import('../views/TableView15_08.vue')
    },
    {
      path: '/table15_09',
      name: 'table15_09',
      component: () => import('../views/TableView15_09.vue')
    },
    {
      path: '/table15_10',
      name: 'table15_10',
      component: () => import('../views/TableView15_10.vue')
    },
    {
      path: '/table15_11',
      name: 'table15_11',
      component: () => import('../views/TableView15_11.vue')
    },
    {
      path: '/table15_12',
      name: 'table15_12',
      component: () => import('../views/TableView15_12.vue')
    },
    {
      path: '/table15_13',
      name: 'table15_13',
      component: () => import('../views/TableView15_13.vue')
    },
    {
      path: '/table15_14',
      name: 'table15_14',
      component: () => import('../views/TableView15_14.vue')
    },
    {
      path: '/table16',
      name: 'table16',
      component: () => import('../views/TableView16.vue')
    },
    {
      path: '/table16_01',
      name: 'table16_01',
      component: () => import('../views/TableView16_01.vue')
    },
    {
      path: '/table16_02',
      name: 'table16_02',
      component: () => import('../views/TableView16_02.vue')
    },
    {
      path: '/table16_03',
      name: 'table16_03',
      component: () => import('../views/TableView16_03.vue')
    },
    {
      path: '/table16_04',
      name: 'table16_04',
      component: () => import('../views/TableView16_04.vue')
    },
    {
      path: '/table16_05',
      name: 'table16_05',
      component: () => import('../views/TableView16_05.vue')
    },
    {
      path: '/table16_06',
      name: 'table16_06',
      component: () => import('../views/TableView16_06.vue')
    },
    {
      path: '/table16_07',
      name: 'table16_07',
      component: () => import('../views/TableView16_07.vue')
    },
    {
      path: '/table16_08',
      name: 'table16_08',
      component: () => import('../views/TableView16_08.vue')
    },
    {
      path: '/table16_09',
      name: 'table16_09',
      component: () => import('../views/TableView16_09.vue')
    },
    {
      path: '/table16_10',
      name: 'table16_10',
      component: () => import('../views/TableView16_10.vue')
    },
    {
      path: '/table16_11',
      name: 'table16_11',
      component: () => import('../views/TableView16_11.vue')
    },
    {
      path: '/table16_12',
      name: 'table16_12',
      component: () => import('../views/TableView16_12.vue')
    }
  ],
})

export default router

📘编写展示入口 src\App.vue

html 复制代码
<script setup>
import { RouterLink, RouterView } from 'vue-router'
import HelloWorld from './components/HelloWorld.vue'
</script>

<template>
  <header>
    <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />

    <div class="wrapper">
      <HelloWorld msg="You did it!" />
      <nav>
        <RouterLink to="/">Progress</RouterLink>
        <RouterLink to="/tabs">Tabs</RouterLink>
        <RouterLink to="/accordion">Accordion</RouterLink>
        <RouterLink to="/timeline">Timeline</RouterLink>
        <RouterLink to="/backToTop">BackToTop</RouterLink>
        <RouterLink to="/notification">Notification</RouterLink>
        <RouterLink to="/card">Card</RouterLink>
        <RouterLink to="/infiniteScroll">InfiniteScroll</RouterLink>
        <RouterLink to="/switch">Switch</RouterLink>
        <RouterLink to="/sidebar">Sidebar</RouterLink>
        <RouterLink to="/breadcrumbs">Breadcrumbs</RouterLink>
        <RouterLink to="/masonryLayout">MasonryLayout</RouterLink>
        <RouterLink to="/rating">Rating</RouterLink>
        <RouterLink to="/datePicker">DatePicker</RouterLink>
        <RouterLink to="/colorPicker">ColorPicker</RouterLink>
        <RouterLink to="/rightClickMenu">RightClickMenu</RouterLink>
        <RouterLink to="/rangePicker">RangePicker</RouterLink>
        <RouterLink to="/navbar">Navbar</RouterLink>
        <RouterLink to="/formValidation">FormValidation</RouterLink>
        <RouterLink to="/copyToClipboard">CopyToClipboard</RouterLink>
        <RouterLink to="/clickAnimations">ClickAnimations</RouterLink>
        <RouterLink to="/thumbnailList">ThumbnailList</RouterLink>
        <RouterLink to="/keyboardShortcuts">KeyboardShortcuts</RouterLink>
        <RouterLink to="/commentSystem">CommentSystem</RouterLink>
        <RouterLink to="/qRCode">QRCode</RouterLink>
        <RouterLink to="/radioButton">RadioButton</RouterLink>
        <RouterLink to="/slider">Slider</RouterLink>
        <RouterLink to="/scrollAnimations">ScrollAnimations</RouterLink>
        <RouterLink to="/textInputView">TextInput</RouterLink>
        <RouterLink to="/divider">Divider</RouterLink>
        <RouterLink to="/checkbox">Checkbox</RouterLink>
        <RouterLink to="/tagInput">TagInput</RouterLink>
        <RouterLink to="/dropdownSelect">DropdownSelect</RouterLink>
        <RouterLink to="/list">List</RouterLink>
        <RouterLink to="/header">Header</RouterLink>
        <RouterLink to="/footer">Footer</RouterLink>
        <RouterLink to="/pagination">Pagination</RouterLink>
        <RouterLink to="/floatingActionButton">FloatingActionButton</RouterLink>
        <RouterLink to="/gridLayout">GridLayout</RouterLink>
        <RouterLink to="/passwordInput">PasswordInput</RouterLink>
        <RouterLink to="/flexbox">Flexbox</RouterLink>
        <RouterLink to="/modal">Modal</RouterLink>
        <RouterLink to="/richTextEditor">RichTextEditor</RouterLink>
        <RouterLink to="/timePickerView">TimePickerView</RouterLink>
        <RouterLink to="/multistepForm">MultistepFormView</RouterLink>
        <RouterLink to="/table1">Table1</RouterLink>
        <RouterLink to="/table2">Table2</RouterLink>
        <RouterLink to="/table3">Table3</RouterLink>
        <RouterLink to="/table4">Table4</RouterLink>
        <RouterLink to="/table5">Table5</RouterLink>
        <RouterLink to="/table6">Table6空状态</RouterLink>
        <RouterLink to="/table7">Table7空状态2</RouterLink>
        <RouterLink to="/table8">Table8基础加载状态</RouterLink>
        <RouterLink to="/table9">Table9自定义加载文本</RouterLink>
        <RouterLink to="/table10">Table10完全自定义加载内容</RouterLink>
        <RouterLink to="/table11">Table11加载结合分页</RouterLink>
        <RouterLink to="/table12">Table12启用列宽调整</RouterLink>
        <RouterLink to="/table12_02">table12_02自定义选择列宽度</RouterLink>
        <RouterLink to="/table14">table14 添加表头固定功能</RouterLink>
        <RouterLink to="/table14_01">table14_01</RouterLink>
        <RouterLink to="/table14_02">table14_02</RouterLink>
        <RouterLink to="/table14_03">table14_03</RouterLink>
        <RouterLink to="/table14_04">table14_04</RouterLink>
        <RouterLink to="/table14_05">table14_05</RouterLink>
        <RouterLink to="/table14_06">table14_06</RouterLink>
        <RouterLink to="/table14_07">table14_07</RouterLink>
        <RouterLink to="/table14_08">table14_08</RouterLink>
        <RouterLink to="/table14_09">table14_09</RouterLink>
        <RouterLink to="/table14_10">table14_10</RouterLink>
        <RouterLink to="/table14_11">table14_11</RouterLink>
        <RouterLink to="/table14_12">table14_12</RouterLink>
        <RouterLink to="/table14_13">table14_13</RouterLink>
        <RouterLink to="/table14_14">table14_14</RouterLink>
        <RouterLink to="/table15">table15 导出数据功能</RouterLink>
        <RouterLink to="/table15_01">table15_01</RouterLink>
        <RouterLink to="/table15_02">table15_02</RouterLink>
        <RouterLink to="/table15_03">table15_03</RouterLink>
        <RouterLink to="/table15_04">table15_04</RouterLink>
        <RouterLink to="/table15_05">table15_05</RouterLink>
        <RouterLink to="/table15_06">table15_06</RouterLink>
        <RouterLink to="/table15_07">table15_07</RouterLink>
        <RouterLink to="/table15_08">table15_08</RouterLink>
        <RouterLink to="/table15_09">table15_09</RouterLink>
        <RouterLink to="/table15_10">table15_10</RouterLink>
        <RouterLink to="/table15_11">table15_11</RouterLink>
        <RouterLink to="/table15_12">table15_12</RouterLink>
        <RouterLink to="/table15_13">table15_13</RouterLink>
        <RouterLink to="/table15_14">table15_14</RouterLink>
        <RouterLink to="/table16">table16添加行拖拽排序功能</RouterLink>
        <RouterLink to="/table16_01">table16_01</RouterLink>
        <RouterLink to="/table16_02">table16_02</RouterLink>
        <RouterLink to="/table16_03">table16_03</RouterLink>
        <RouterLink to="/table16_04">table16_04</RouterLink>
        <RouterLink to="/table16_05">table16_05</RouterLink>
        <RouterLink to="/table16_06">table16_06</RouterLink>
        <RouterLink to="/table16_07">table16_07</RouterLink>
        <RouterLink to="/table16_08">table16_08</RouterLink>
        <RouterLink to="/table16_09">table16_09</RouterLink>
        <RouterLink to="/table16_10">table16_10</RouterLink>
        <RouterLink to="/table16_11">table16_11</RouterLink>
        <RouterLink to="/table16_12">table16_12</RouterLink>
      </nav>
    </div>
  </header>
  <RouterView />
</template>

<style scoped>
header {
  line-height: 1.5;
  max-height: 100vh;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

nav {
  width: 100%;
  font-size: 12px;
  text-align: center;
  margin-top: 2rem;
}

nav a.router-link-exact-active {
  color: var(--color-text);
}

nav a.router-link-exact-active:hover {
  background-color: transparent;
}

nav a {
  display: inline-block;
  padding: 0 1rem;
  border-left: 1px solid var(--color-border);
}

nav a:first-of-type {
  border: 0;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }

  nav {
    text-align: left;
    margin-left: -1rem;
    font-size: 1rem;

    padding: 1rem 0;
    margin-top: 1rem;
  }
}
</style>

📚页面效果

📚相关文章

------------ 相 关 文 章 ------------

  1. DeepSeek 助力 Vue 开发:打造丝滑的步骤条(Step bar)https://blog.csdn.net/qq_33650655/article/details/145560497

  2. DeepSeek 助力 Vue 开发:打造丝滑的进度条(Progress Bar)https://blog.csdn.net/qq_33650655/article/details/145577034

  3. DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)https://blog.csdn.net/qq_33650655/article/details/145587999

  4. DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)https://blog.csdn.net/qq_33650655/article/details/145590404

  5. DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )https://blog.csdn.net/qq_33650655/article/details/145597372

  6. DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)https://blog.csdn.net/qq_33650655/article/details/145615550

  7. DeepSeek 助力 Vue 开发:打造丝滑的通知栏(Notification Bar)https://blog.csdn.net/qq_33650655/article/details/145620055

  8. DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)https://blog.csdn.net/qq_33650655/article/details/145634564

  9. DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)https://blog.csdn.net/qq_33650655/article/details/145638452

  10. DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)https://blog.csdn.net/qq_33650655/article/details/145644151

  11. DeepSeek 助力 Vue 开发:打造丝滑的侧边栏(Sidebar)https://blog.csdn.net/qq_33650655/article/details/145654204

  12. DeepSeek 助力 Vue 开发:打造丝滑的面包屑导航(Breadcrumbs)https://blog.csdn.net/qq_33650655/article/details/145656895

  13. DeepSeek 助力 Vue 开发:打造丝滑的瀑布流布局(Masonry Layout)https://blog.csdn.net/qq_33650655/article/details/145663699

  14. DeepSeek 助力 Vue 开发:打造丝滑的评分组件(Rating)https://blog.csdn.net/qq_33650655/article/details/145664576

  15. DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件 https://blog.csdn.net/qq_33650655/article/details/145673279

  16. DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)https://blog.csdn.net/qq_33650655/article/details/145689522

  17. DeepSeek 助力 Vue 开发:打造丝滑的右键菜单(RightClickMenu)https://blog.csdn.net/qq_33650655/article/details/145706658

  18. DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)https://blog.csdn.net/qq_33650655/article/details/145713572

  19. DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)https://blog.csdn.net/qq_33650655/article/details/145732421

  20. DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)https://blog.csdn.net/qq_33650655/article/details/145735582

  21. DeepSeek 助力 Vue 开发:打造丝滑的复制到剪贴板(Copy to Clipboard)https://blog.csdn.net/qq_33650655/article/details/145739569

  22. DeepSeek 助力 Vue 开发:打造丝滑的点击动画(Click Animations)https://blog.csdn.net/qq_33650655/article/details/145766184

  23. DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)https://blog.csdn.net/qq_33650655/article/details/145776679

  24. DeepSeek 助力 Vue 开发:打造丝滑的 键盘快捷键(Keyboard Shortcuts) https://blog.csdn.net/qq_33650655/article/details/145780227

  25. DeepSeek 助力 Vue 开发:打造丝滑的评论系统(Comment System)https://blog.csdn.net/qq_33650655/article/details/145781104

  26. DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)https://blog.csdn.net/qq_33650655/article/details/145797928

  27. DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)https://blog.csdn.net/qq_33650655/article/details/145810620

  28. DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)https://blog.csdn.net/qq_33650655/article/details/145817161

  29. DeepSeek 助力 Vue 开发:打造丝滑的滚动动画(Scroll Animations)https://blog.csdn.net/qq_33650655/article/details/145818571

  30. DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)https://blog.csdn.net/qq_33650655/article/details/145837003

  31. DeepSeek 助力 Vue 开发:打造丝滑的分割线(Divider)https://blog.csdn.net/qq_33650655/article/details/145849100

  32. DeepSeek 助力 Vue 开发:打造丝滑的 复选框(Checkbox)https://blog.csdn.net/qq_33650655/article/details/145855695

  33. DeepSeek 助力 Vue3 开发:打造丝滑的标签输入(Tag Input)https://blog.csdn.net/qq_33650655/article/details/145858574

  34. DeepSeek 助力 Vue3 开发:打造丝滑的下拉选择框(Dropdown Select)https://blog.csdn.net/qq_33650655/article/details/145861882

  35. DeepSeek 助力 Vue3 开发:打造丝滑的列表(List)https://blog.csdn.net/qq_33650655/article/details/145866384

  36. DeepSeek 助力 Vue3 开发:打造丝滑的页眉(Header)https://blog.csdn.net/qq_33650655/article/details/145885122

  37. DeepSeek 助力 Vue3 开发:打造丝滑的页脚(Footer)https://blog.csdn.net/qq_33650655/article/details/145886306

  38. DeepSeek 助力 Vue3 开发:打造丝滑的分页(Pagination)https://blog.csdn.net/qq_33650655/article/details/145886824

  39. DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)
    https://blog.csdn.net/qq_33650655/article/details/145888339

  40. DeepSeek 助力 Vue3 开发:打造丝滑的网格布局(Grid Layout)https://blog.csdn.net/qq_33650655/article/details/145893422

  41. DeepSeek 助力 Vue3 开发:打造丝滑的密码输入框(Password Input))https://blog.csdn.net/qq_33650655/article/details/145903079

  42. DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)https://blog.csdn.net/qq_33650655/article/details/145938677

  43. DeepSeek 助力 Vue3 开发:打造丝滑的模态框(Modal)https://blog.csdn.net/qq_33650655/article/details/145938939

  44. DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)https://blog.csdn.net/qq_33650655/article/details/145939053

  45. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例1:基础表格 https://blog.csdn.net/qq_33650655/article/details/145939144

  46. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序 https://blog.csdn.net/qq_33650655/article/details/146025347

  47. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择 https://blog.csdn.net/qq_33650655/article/details/146025478

  48. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例4: 自定义插槽 https://blog.csdn.net/qq_33650655/article/details/146025513

  49. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例5: 搜索和过滤 https://blog.csdn.net/qq_33650655/article/details/146025532

  50. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示 https://blog.csdn.net/qq_33650655/article/details/146042249

  51. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示,带插图的空状态,Table7空状态2 https://blog.csdn.net/qq_33650655/article/details/146046044

  52. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,基础加载状态,Table8基础加载状态 https://blog.csdn.net/qq_33650655/article/details/146049283

  53. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,自定义加载文本,Table9自定义加载文本https://blog.csdn.net/qq_33650655/article/details/146049592

  54. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,完全自定义加载内容,Table10完全自定义加载内容 https://blog.csdn.net/qq_33650655/article/details/146049663

  55. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,加载结合分页 ,Table11加载结合分页 https://blog.csdn.net/qq_33650655/article/details/146049727

  56. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12 https://blog.csdn.net/qq_33650655/article/details/146139452

  57. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例https://blog.csdn.net/qq_33650655/article/details/146166033

  58. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_01基础固定表头示例 https://blog.csdn.net/qq_33650655/article/details/146162035

  59. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_02带边框和斑马纹的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162045

  60. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_03可调整列宽的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162057

  61. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_04带选择框的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162076

  62. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_05可排序的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162098

  63. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_06带搜索功能的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162127

  64. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_07带分页的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162135

  65. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_08带加载状态的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162142

  66. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_09自定义单元格的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162151

  67. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_10空状态的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162165

  68. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_11多功能组合的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162175

  69. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_12自定义表头的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162186

  70. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162201

  71. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_14树形数据的固定表头表格 https://blog.csdn.net/qq_33650655/article/details/146162213

  72. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能 https://blog.csdn.net/qq_33650655/article/details/146329292

  73. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例1,TableView15_01基础导出功能示例 https://blog.csdn.net/qq_33650655/article/details/146349203

  74. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例2,TableView15_02导出为CSV格式示例 https://blog.csdn.net/qq_33650655/article/details/146350878

  75. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例3,TableView15_03导出全部数据示例 https://blog.csdn.net/qq_33650655/article/details/146351008

  76. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当前页数据示例 https://blog.csdn.net/qq_33650655/article/details/146382664

  77. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例5,TableView15_05自定义导出按钮文本示例 https://blog.csdn.net/qq_33650655/article/details/146383279

  78. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例6,TableView15_06自定义导出文件名示例 https://blog.csdn.net/qq_33650655/article/details/146383261

  79. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例7,TableView15_07带边框和斑马纹的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351137

  80. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例8,TableView15_08带选择框的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351159

  81. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351181

  82. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例10,TableView15_10带搜索的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351196

  83. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例11,TableView15_11带分页的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351224

  84. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例12,TableView15_12固定表头的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351254

  85. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例13,TableView15_13可调整列宽的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351271

  86. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功能组合的导出表格示例 https://blog.csdn.net/qq_33650655/article/details/146351297

  87. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能 https://blog.csdn.net/qq_33650655/article/details/146351051

  88. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例1,TableView16_01.vue 基础行拖拽排序示例 https://blog.csdn.net/qq_33650655/article/details/146516134

  89. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例2,TableView16_02.vue 拖拽视觉反馈示例 https://blog.csdn.net/qq_33650655/article/details/146351077

  90. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例3,TableView16_03 拖拽视觉反馈示例 https://blog.csdn.net/qq_33650655/article/details/146517501

  91. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例4,TableView16_04 跨表格拖拽示例 https://blog.csdn.net/qq_33650655/article/details/146517613

  92. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例5,TableView16_05 树形表格拖拽排序 https://blog.csdn.net/qq_33650655/article/details/146517619

  93. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序 https://blog.csdn.net/qq_33650655/article/details/146517627

  94. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列拖拽排序示例 https://blog.csdn.net/qq_33650655/article/details/146351099

  95. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例8,TableView16_08 筛选状态拖拽排序 https://blog.csdn.net/qq_33650655/article/details/146545632

  96. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例9,TableView16_09 嵌套表格拖拽排序 https://blog.csdn.net/qq_33650655/article/details/146545641

  97. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例10,TableView16_10 虚拟滚动拖拽示例 https://blog.csdn.net/qq_33650655/article/details/146545647

  98. DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例11,TableView16_11 拖拽与行编辑结合示例 https://blog.csdn.net/qq_33650655/article/details/146545654

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕,若转载本文,一定注明本文链接。


更多专栏订阅推荐:

👍 html+css+js 绚丽效果

💕 vue

✈️ Electron

⭐️ js

📝 字符串

✍️ 时间对象(Date())操作

相关推荐
gnip25 分钟前
链式调用和延迟执行
前端·javascript
SoaringHeart36 分钟前
Flutter组件封装:页面点击事件拦截
前端·flutter
杨天天.39 分钟前
小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
前端·javascript·小程序·音视频
Dragon Wu1 小时前
React state在setInterval里未获取最新值的问题
前端·javascript·react.js·前端框架
Jinuss1 小时前
Vue3源码reactivity响应式篇之watch实现
前端·vue3
YU大宗师1 小时前
React面试题
前端·javascript·react.js
木兮xg1 小时前
react基础篇
前端·react.js·前端框架
ssshooter1 小时前
你知道怎么用 pnpm 临时给某个库打补丁吗?
前端·面试·npm
IT利刃出鞘2 小时前
HTML--最简的二级菜单页面
前端·html
yume_sibai2 小时前
HTML HTML基础(4)
前端·html