<…">
当前位置:首页 > VUE

vue实现table表格滚动

2026-01-23 01:38:54VUE

实现固定表头滚动

使用CSS固定表头,表格内容区域滚动:

<template>
  <div class="scroll-table-container">
    <table>
      <thead>
        <tr>
          <th v-for="col in columns" :key="col.key">{{ col.title }}</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(row, index) in data" :key="index">
          <td v-for="col in columns" :key="col.key">{{ row[col.key] }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<style scoped>
.scroll-table-container {
  height: 400px;
  overflow-y: auto;
}

table {
  width: 100%;
  border-collapse: collapse;
}

thead {
  position: sticky;
  top: 0;
  background: white;
  z-index: 10;
}

th, td {
  padding: 8px 16px;
  border: 1px solid #ddd;
}
</style>

使用第三方组件库

Element UI的el-table组件自带滚动功能:

vue实现table表格滚动

<template>
  <el-table
    :data="tableData"
    height="400"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
  </el-table>
</template>

横向滚动实现

为表格容器添加横向滚动条:

.table-container {
  width: 100%;
  overflow-x: auto;
  white-space: nowrap;
}

虚拟滚动优化性能

对于大数据量表格,使用vue-virtual-scroller:

vue实现table表格滚动

<template>
  <RecycleScroller
    class="scroller"
    :items="data"
    :item-size="50"
    key-field="id">
    <template v-slot="{ item }">
      <div class="row">
        <div v-for="col in columns" :key="col.key">
          {{ item[col.key] }}
        </div>
      </div>
    </template>
  </RecycleScroller>
</template>

<style>
.scroller {
  height: 400px;
}

.row {
  display: flex;
  border-bottom: 1px solid #eee;
  height: 50px;
  align-items: center;
}

.row > div {
  flex: 1;
  padding: 0 10px;
}
</style>

自定义滚动事件监听

通过监听滚动事件实现特殊效果:

mounted() {
  const tableBody = document.querySelector('.table-container tbody')
  tableBody.addEventListener('scroll', this.handleScroll)
},
methods: {
  handleScroll(event) {
    const { scrollTop, clientHeight, scrollHeight } = event.target
    if (scrollHeight - scrollTop === clientHeight) {
      // 滚动到底部加载更多数据
    }
  }
}

响应式表格高度

动态计算表格容器高度:

computed: {
  tableHeight() {
    return window.innerHeight - 200 // 减去页眉页脚等固定高度
  }
},
mounted() {
  window.addEventListener('resize', this.handleResize)
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize)
}

标签: 表格vue
分享给朋友:

相关文章

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是…

vue实现点击页面切换

vue实现点击页面切换

实现点击页面切换功能 在Vue中实现点击页面切换功能,可以通过路由跳转或组件动态渲染两种方式完成。以下是具体实现方法: 使用Vue Router实现页面跳转 安装Vue Router后,在项目中…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-mode…

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…