当前位置:首页 > VUE

vue 实现表格固定列

2026-02-24 04:04:01VUE

Vue 实现表格固定列的方法

使用 CSS 固定列

通过 CSS 的 position: sticky 属性可以实现列的固定效果。适用于简单的表格布局,无需额外库支持。

vue 实现表格固定列

<template>
  <div class="table-container">
    <table>
      <thead>
        <tr>
          <th class="fixed-column">固定列</th>
          <th>列1</th>
          <th>列2</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in data" :key="item.id">
          <td class="fixed-column">{{ item.fixed }}</td>
          <td>{{ item.col1 }}</td>
          <td>{{ item.col2 }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<style scoped>
.table-container {
  overflow-x: auto;
  max-width: 100%;
}
.fixed-column {
  position: sticky;
  left: 0;
  background-color: white;
  z-index: 1;
}
</style>

使用第三方库(如 Element UI)

Element UI 的 el-table 组件内置固定列功能,通过 fixed 属性即可实现。

vue 实现表格固定列

<template>
  <el-table :data="data" style="width: 100%">
    <el-table-column prop="fixed" label="固定列" fixed width="150"></el-table-column>
    <el-table-column prop="col1" label="列1" width="200"></el-table-column>
    <el-table-column prop="col2" label="列2" width="200"></el-table-column>
  </el-table>
</template>

自定义滚动监听

对于复杂场景,可通过监听滚动事件动态控制列的样式。

<template>
  <div class="scroll-container" @scroll="handleScroll">
    <table>
      <thead>
        <tr>
          <th :class="{ 'fixed-column': isFixed }">固定列</th>
          <th>列1</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in data" :key="item.id">
          <td :class="{ 'fixed-column': isFixed }">{{ item.fixed }}</td>
          <td>{{ item.col1 }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFixed: false
    };
  },
  methods: {
    handleScroll(e) {
      this.isFixed = e.target.scrollLeft > 0;
    }
  }
};
</script>

性能优化建议

  • 固定列数量不宜过多,避免渲染性能问题。
  • 大数据量时建议使用虚拟滚动(如 vue-virtual-scroller)。
  • 第三方库的固定列功能通常已优化,优先考虑使用。

以上方法可根据项目需求选择,CSS 方案轻量但功能有限,第三方库功能全面但体积较大。

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

相关文章

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HTM…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue 实现聊天

vue 实现聊天

使用 Vue 实现聊天功能 创建 Vue 项目并安装依赖 确保已安装 Vue CLI,通过以下命令创建新项目: vue create chat-app 进入项目目录后,安装必要的依赖(如 Socke…