而且Element-UI 的 Table 组件封装得很严谨,直接操作 dom 很容易产生不可预计的 bug 所以我的核心思路就是:通过一个数组渲染表头(列),然后修改这个数组的顺序,从而修改列表的列排序 template 部分: <div class="w-table" :class="{'w-table_moving': dragState.dragging}"> <el-table :data="data" :bord...
1.封装一个拖动事件 2.全局引入 3.在表格中使用 一、需求 在使用element-ui的el-table的时候,难免会遇到列太多,使用悬浮列的情况,这个是element官方封装好的,只需要添加一个fixed的属性即可实现固定列的悬浮效果。 but!! 他却没有封装更为人性化的操作,例如鼠标点击进行拖动!! 只能通过点击拖动条进行左右拖动,...
拖拽事件绑定到tableBodyWrapper:确保拖拽事件绑定在实际可滚动的tableBodyWrapper上。 样式调整:使用tableBodyWrapper的样式来显示抓手光标,并在拖动时切换光标样式。 隐藏水平滚动条:通过设置overflowX: hidden来隐藏原生滚动条,但确保滚动功能仍然有效。 更新兼容手机拖拽功能 <div ref="tableContainer" class="table-con...
而且Element-UI 的 Table 组件封装得很严谨,直接操作 dom 很容易产生不可预计的 bug 所以我的核心思路就是:通过一个数组渲染表头(列),然后修改这个数组的顺序,从而修改列表的列排序 template 部分: <divclass="w-table":class="{'w-table_moving': dragState.dragging}"><el-table:data="data":border="opt...
而ElementUI的table组件官方并没有提供列拖拽功能,因此经过我多番研究,终于在table组件的基础上通过自定义组件的方式实现列拖拽效果,以下是效果图: 传统的拖拽,都是通过监听相关鼠标事件来操纵dom节点。而Vue是一个数据驱动的前端框架,应避免直接触及dom操作。 所以核心实现思路:把表头放到一个数组里,拖拽时通过改变...
<template> <div> <h1>基于element-ui table列拖拽实现</h1> <drag-head :head-columns="tableHead" :data="tableData"></drag-head> </div> </template> <script> import DragHead from "./dragHead.vue"; export default { name: "DragHeadCase", components: { DragHead }, data() { return ...
公司需求 需要 el-table中的数据进行 人为的拖拽排序 看到排序 相信大家第一时间都会想到 vuedraggable 但是 经由本人测试后发现 el-table,如果用 draggable 标签包裹,那么排序的只是表格本身。 那么怎么办呢 我说下我的解决方案 首先安装sortablejs 然后引入 sortablejs ...
先在data函数里面定义一个枚举值,有多少列就对应多少条,prop跟 el-table-column里面设置prop的值一样,这里设枚举值的原因是,跟拖动的函数做匹配,并存储宽度。 根据自己的业务key来。 拖拽之后计时保存到localstorage中。 当你拖动的时候就会存储到本地,这时候已经看到了width里面存储的对应列的宽度。
{ // 表头数据 tableHeader: [ { label: "姓名", prop: "name", }, { label: "年龄", prop: "age", }, { label: "家乡", prop: "home", }, { label: "爱好", prop: "hobby", }, ], // 表体数据 tableBody: [ { id: "1", name: "孙悟空", age: 500, home: "花果山", ...
如果是后端存一份也是一个道理,只要在表格拖动事件的回调函数中把对应列的宽度更改即可,然后告知后端(比如通过接口)当然表头数据也要通过后端获取,就不是前端代码中写死的了 好记性不如烂笔头,记录一下把^_^ element-ui 阅读4.5k更新于2022-01-09 水冗水孚 ...