Vue3+Element Plus动态表格列宽设置

在 Vue3 + Element Plus 中实现动态设置表格列宽,可以通过以下几种方式实现:

方法 1:动态绑定 width 属性(推荐)

vue

复制

下载

<template><el-table :data="tableData" style="width: 100%"><!-- 动态绑定 width --><el-table-columnprop="name"label="姓名":width="dynamicWidth"/><!-- 其他列 --></el-table><el-slider v-model="dynamicWidth" :min="100" :max="300" />
</template><script setup>
import { ref } from 'vue';const dynamicWidth = ref(150); // 初始宽度
const tableData = ref([{ name: '张三', age: 30 },{ name: '李四', age: 25 }
]);
</script>

方法 2:使用响应式对象管理列配置

vue

复制

下载

<template><el-table :data="tableData"><el-table-columnv-for="col in columns":key="col.prop":prop="col.prop":label="col.label":width="col.width"/></el-table><el-button @click="resizeColumn">调整第一列宽度</el-button>
</template><script setup>
import { ref } from 'vue';const columns = ref([{ prop: 'name', label: '姓名', width: 120 },{ prop: 'age', label: '年龄', width: 80 }
]);const resizeColumn = () => {columns.value[0].width = Math.floor(Math.random() * 200 + 100);
};
</script>

方法 3:结合拖拽事件动态调整(高级)

vue

复制

下载

<template><el-table :data="tableData"@header-dragend="handleResize"><el-table-columnprop="name"label="姓名(可拖拽)"width="150"resizable/><!-- 其他列 --></el-table>
</template><script setup>
const handleResize = (newWidth, oldWidth, column) => {console.log('列宽变化:', {column: column.label,oldWidth,newWidth});// 这里可以保存新的宽度到数据库或状态管理
};
</script>

方法 4:响应式设置最小/最大宽度

vue

复制

下载

<el-table-columnprop="email"label="邮箱":min-width="100":width="emailWidth"
/>

注意事项:

  1. 单位处理

    • 数字值默认单位为 px

    • 可使用字符串指定单位::width="'20%'"

  2. 性能优化

    vue

    复制

    下载

    <el-table :data="tableData" table-layout="fixed"><!-- 固定布局模式下宽度分配更精确 -->
    </el-table>
  3. 响应式断点

    js

    复制

    下载

    import { useWindowSize } from '@vueuse/core';const { width } = useWindowSize();
    const dynamicWidth = computed(() => {return width.value < 768 ? 100 : 200;
    });
  4. 动态隐藏列

    vue

    复制

    下载

    <el-table-columnv-if="showColumn"prop="address"label="地址"width="200"
    />

完整示例(动态调整 + 保存配置):

vue

复制

下载

<template><el-table :data="tableData" @header-dragend="saveColumnWidth"><el-table-columnv-for="col in columns":key="col.prop"v-bind="col"resizable/></el-table>
</template><script setup>
import { ref, onMounted } from 'vue';// 列配置(从本地存储加载或使用默认值)
const columns = ref([{ prop: 'name', label: '姓名', width: loadWidth('name', 120) },{ prop: 'age', label: '年龄', width: loadWidth('age', 80) },{ prop: 'email', label: '邮箱', width: loadWidth('email', 200) }
]);// 加载保存的宽度
function loadWidth(prop, defaultValue) {const saved = localStorage.getItem(`colWidth_${prop}`);return saved ? parseInt(saved) : defaultValue;
}// 保存列宽
const saveColumnWidth = (newWidth, oldWidth, column) => {const prop = column.property;localStorage.setItem(`colWidth_${prop}`, newWidth);
};// 表格数据
const tableData = ref([...]);
</script>

常见问题解决:

  1. 宽度不生效

    • 确保父容器有明确宽度

    • 添加 CSS:.el-table { table-layout: fixed; }

  2. 拖拽卡顿

    • 减少表格数据量

    • 使用虚拟滚动:<el-table-v2>

  3. 自适应内容宽度

    js

    复制

    下载

    const autoWidth = ref(0);
    onMounted(() => {// 根据内容计算宽度(示例)autoWidth.value = Math.max(...tableData.value.map(d => d.name.length * 10));
    });

选择合适的方法取决于你的具体需求:

  • 简单动态调整:使用方法 1

  • 复杂表格配置:使用方法 2

  • 需要保存用户设置:结合 localStorage 实现

  • 响应式布局:结合窗口尺寸监听

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85140.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM目前使用过的参数总结】

JVM参数总结 笔记记录 JVM-栈相关JVM-方法区(元空间)相关JVM-堆相关 JVM-栈相关 .-XX:ThreadStackSize1M -Xss1m 上面的简写形式【设置栈的大小】 JVM-方法区(元空间)相关 -XX:MaxMetaspaceSize10m 【设置最大元空间大小】 JVM-堆相关 -XX:MaxHeapSize10m -Xmx10m 上面的简写形…

AI辅助高考志愿填报-专业全景解析与报考指南

高考志愿填报&#xff0c;这可是关系到孩子未来的大事儿&#xff01;最近&#xff0c;我亲戚家的孩子也面临着这个难题&#xff0c;昨晚一个电话就跟我聊了好久&#xff0c;问我报啥专业好。说实话&#xff0c;这问题真不好回答&#xff0c;毕竟每个孩子情况不一样&#xff0c;…

Android Studio Windows安装与配置指南

Date: 2025-06-14 20:07:12 author: lijianzhan 内容简介 文章中&#xff0c;主要是为了初次接触 Android 开发的用户提供详细的关于 Android Studio 安装以及配置教程&#xff0c;涵盖环境准备、软件下载、安装配置全流程&#xff0c;重点解决路径命名、组件选择、工作空间设置…

SpringAI+DeepSeek-了解AI和大模型应用

一、认识AI 1.人工智能发展 AI&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;使机器能够像人类一样思考、学习和解决问题的技术。 AI发展至今大概可以分为三个阶段&#xff1a; 其中&#xff0c;深度学习领域的自然语言处理(Natural Lan…

IP5362至为芯支持无线充的22.5W双C口双向快充移动电源方案芯片

英集芯IP5362是一款应用于移动电源&#xff0c;充电宝&#xff0c;手机&#xff0c;平板电脑等支持无线充模式的22.5W双向快充移动电源方案SOC芯片,集成同步升降压转换器、锂电池充电管理、电池电量指示等功能。兼容全部快充协议&#xff0c;同步开关放电支持最大22.5W输出功率…

手游刚开服就被攻击怎么办?如何防御DDoS?

手游新上线时遭遇DDoS攻击是常见现象&#xff0c;可能导致服务器瘫痪、玩家流失甚至项目失败。面对突如其来的攻击&#xff0c;开发者与运营商需要迅速响应并建立长效防御机制。本文提供应急处理步骤与防御策略&#xff0c;助力游戏稳定运营。 一、手游开服遭攻击的应急响应 快…

秋招是开发算法一起准备,还是只准备一个

THE LAST TIME 昨天晚上半夜有个星球的26届的同学&#xff0c;私信问我。说目前是只准备开发还是开发算法一起准备&#xff08;两者技术知识都挺欠缺的&#xff09; 看到这里&#xff0c;肯定有很多同学会说。马上都该秋招了&#xff0c;还什么多线程开工&#xff0c;赶紧能住编…

web项目部署配置HTTPS遇到的问题解决方法

今天使用nginxtomcatssl完成了web项目的部署&#xff0c;本以为没有什么问题&#xff0c;但是在页面测试的时候又蹦出了这么一个问题&#xff0c;大致是说由于配置了HTTPS&#xff0c;但是之前的请求是通过HTTP请求的&#xff0c;所以现在被拦截&#xff0c;由于缺少某些权限信…

理解与建模弹性膜-AI云计算数值分析和代码验证

弹性膜在连接生物学理解和工程创新方面至关重要&#xff0c;因为它们能够模拟软组织力学、实现先进的细胞培养系统和促进柔性设备&#xff0c;广泛应用于软组织生物力学、细胞培养、生物膜建模和生物医学工程等领域。 ☁️AI云计算数值分析和代码验证 弹性膜在连接生物学理解和…

AI大模型竞赛升温:百度发布文心大模型4.5和X1

AI大模型&#xff0c;作为智能技术的巅峰之作&#xff0c;正逐步改变着我们的生活与工作方式。近期&#xff0c;百度在AI大模型领域的最新动向&#xff0c;无疑为这场科技竞赛再添一把火。3月16日&#xff0c;百度正式宣布发布文心大模型4.5及文心大模型X1&#xff0c;这两款大…

升级OpenSSL和OpenSSH 修复漏洞

升级OpenSSL和OpenSSH 目前版本OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 升级到OpenSSH_9.8p1, OpenSSL 1.1.1u 30 May 2023 服务器CentOS Linux release 7.6.1810 (Core) 一、升级OpenSSL到1.1.1u 下载并编译 OpenSSL&#xff08;推荐目录 /usr/local/openssl&…

JavaSE - Object 类详细讲解

定义 是所有类的直接或者间接父类&#xff0c;是 Java 中唯一一个没有父类的类。其中所有的方法都是可以被子类继承的。 常用方法 equals方法&#xff1a; 比较两个对象引用的地址值是否相同&#xff0c;默认情况下是使用 “” 进行比较&#xff0c;但是这个方法一般会被之类…

观远ChatBI|让数据分析像聊天一样简单

BI通过收集、整合和分析企业内部的各种数据&#xff0c;帮助企业发现数据中的模式和趋势&#xff0c;从而做出更明智的商业决策&#xff0c;以此来提升企业的经营能力和竞争力。无论是传统BI还是自助BI&#xff0c;都是为了在数据和人之间建立一座桥梁&#xff0c;使数据能够被…

Go语言同步原语与数据竞争:WaitGroup

在Go语言并发编程中&#xff0c;我们经常需要等待多个 goroutine 执行完毕后再继续下一步操作。Go 提供的 sync.WaitGroup 就是专为这种**“等待一组任务完成”**而设计的同步原语。 一、基本原理 sync.WaitGroup 提供三个主要方法&#xff1a; 方法说明Add(n int)设置等待的…

Java单体架构 vs 分布式架构

Java单体架构 vs 分布式架构 在电商系统开发中&#xff0c;当用户量从几百激增到百万级&#xff0c;你的架构是否还能从容应对&#xff1f;一次代码更新是否意味着整个系统停机&#xff1f;今天我们就来拆解Java架构设计的核心命题&#xff1a;单体还是分布式&#xff1f; 一、…

day40- 硬件学习之 51单片机II (中断处理)

一、独立按键的使用 main.c key.c key.h 二、中断处理 2.1 定义 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当CPU正在处理某件事的时候外界发生了紧急事件请求&#xff0c;要求CPU暂停当前的工作&#xff0c;转而去处理这个紧急事件&#xff0c;处理完以…

机器学习:开启智能时代的大门

一、引言 机器学习&#xff08;Machine Learning&#xff09;正成为人工智能的核心技术。从 Netflix 推荐电影&#xff0c;到银行识别欺诈交易&#xff0c;机器学习正在逐渐改变世界。本篇文章将从理论到实操全面介绍机器学习的基础概念&#xff0c;并附有代码和案例。 二、什…

几个重要的行列式 线性代数

目录 1.主&#xff08;副&#xff09;对角线行列式 2 拉普拉斯展开式 3 范德蒙德行列式 对于行列式的计算来说&#xff0c;一般给出的行列式我们都要对其进行化简&#xff0c;但是化简到什么程度就可以了呢&#xff1f; 这就是本篇的用处&#xff0c;一般给出的行列式化简的…

答辩讲解387基于Spring Boot的心理健康管理系统

摘 要 视频地址 答辩讲解387基于Spring Boot的心理健康管理系统_哔哩哔哩_bilibili 自改革开放政策施行以来&#xff0c;我国经济持续保持快速增长态势&#xff0c;国民生活水平得到了明显提升&#xff0c;然而近些年来&#xff0c;经济增速出现放缓&#xff0c;再加上疫情等…

使用WinUSB读写USB设备

参考&#xff1a;使用WinUSB读写USB设备 - USB中文网