当前位置: 首页 > news >正文

前端表格滑动滚动条太费事,做个浮动滑动插件

比如下面的表格,因为滚动条样式设计得很窄,所以用鼠标滑动起来很费劲

<template><el-table:data="tableData"style="width: 600px"height="250"><el-table-columnfixedprop="date"label="日期"width="150"></el-table-column><el-table-columnprop="name"label="姓名"width="120"></el-table-column><el-table-columnprop="province"label="省份"width="120"></el-table-column><el-table-columnprop="city"label="市区"width="120"></el-table-column><el-table-columnprop="address"label="地址"width="300"></el-table-column><el-table-columnprop="zip"label="邮编"width="120"></el-table-column></el-table>
</template><script>export default {data() {return {tableData: [{date: '2016-05-03',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-02',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-04',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-01',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-08',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-06',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-07',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}]}}}
</script>
<style>
::-webkit-scrollbar-track {box-shadow: rgb(255, 255, 255) 0px 0px 0.27778rem inset;background: rgb(255, 255, 255);border-radius: 0.55556rem;
}
::-webkit-scrollbar-thumb {background: rgb(199, 0, 25);border-radius: 0.55556rem;
}
::-webkit-scrollbar {height: 0.33333rem;width: 0.33333rem;
}
</style>

使滚动条向左移,可以使用下面两种方法

document.getElementsByClassName('el-table__body-wrapper')[0].scrollLeft += 120
// el-table 方法
this.$refs.elTable.$refs.bodyWrapper.scrollLeft += 120

再添加按钮可拖动功能

 

<template><div style="text-align: left;vertical-align: top;"><div ref="dialog" class="dialog-header" @mousedown="startDrag($event)"><el-button type="success" icon="el-icon-arrow-left" circle @click="leftClick"></el-button><el-button type="success" icon="el-icon-arrow-right" circle @click="rightClick"></el-button></div><el-table :data="tableData" ref="elTable" style="width: 600px" height="250"><el-table-column fixed prop="date" label="日期" width="150"></el-table-column><el-table-column prop="name" label="姓名" width="120"></el-table-column><el-table-column prop="province" label="省份" width="120"></el-table-column><el-table-column prop="city" label="市区" width="120"></el-table-column><el-table-column prop="address" label="地址" width="300"></el-table-column><el-table-column prop="zip" label="邮编" width="120"></el-table-column></el-table></div>
</template><script>
export default {data() {return {tableData: [{date: '2016-05-03',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-02',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-04',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-01',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-08',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-06',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}, {date: '2016-05-07',name: '王小虎',province: '上海',city: '普陀区',address: '上海市普陀区金沙江路 1518 弄',zip: 200333}],isDragging: false,offsetX: 0,offsetY: 0}},methods: {leftClick() {// document.getElementsByClassName('el-table__body-wrapper')[0].scrollLeft -= 120this.$refs.elTable.$refs.bodyWrapper.scrollLeft -= 120},rightClick() {this.$refs.elTable.$refs.bodyWrapper.scrollLeft += 120},startDrag(event) {this.isDragging = true;this.offsetX = event.clientX - this.$refs.dialog.offsetLeft;this.offsetY = event.clientY - this.$refs.dialog.offsetTop;document.addEventListener('mousemove', this.drag);document.addEventListener('mouseup', this.stopDrag);},drag(event) {if (this.isDragging) {this.$refs.dialog.style.left = event.clientX - this.offsetX + 'px';this.$refs.dialog.style.top = event.clientY - this.offsetY + 'px';}},stopDrag() {this.isDragging = false;document.removeEventListener('mousemove', this.drag);document.removeEventListener('mouseup', this.stopDrag);}}
}
</script>
<style>
::-webkit-scrollbar-track {box-shadow: rgb(255, 255, 255) 0px 0px 0.27778rem inset;background: rgb(255, 255, 255);border-radius: 0.55556rem;
}::-webkit-scrollbar-thumb {background: rgb(199, 0, 25);border-radius: 0.55556rem;
}::-webkit-scrollbar {height: 0.33333rem;width: 0.33333rem;
}.dialog-header {cursor: move;background-color: #f0f0f0;padding: 5px;position: absolute;z-index: 5;
}
</style>

最终效果:

相关文章:

  • synchronized关键字详解
  • 有关多线程
  • 总共76dp 空出20dp然后放一个控件的写法
  • Spring 中的 @ComponentScan注解详解
  • Android Framework学习五:APP启动过程原理及速度优化
  • Redis内存淘汰策略和过期键删除策略有哪些?
  • TAOCMS漏洞代码学习及分析
  • 微信开发者工具里面模拟操作返回、录屏、网络速度、截屏等操作
  • 企业级IP代理解决方案:负载均衡与API接口集成实践
  • 【CUDA】Sgemm单精度矩阵乘法(上)
  • 达梦数据库 【-6111: 字符串转换出错】问题处理
  • 【AI大模型】赋能【传统业务】
  • React构建组件
  • 微信小程序学习之轮播图swiper
  • 【unity游戏开发——编辑器扩展】EditorWindow自定义unity窗口拓展
  • 橙子、橘子相关(果实、叶片、疾病等)数据集大合集
  • SQL注入报错“Illegal mix of collations for operation ‘UNION‘”解决办法
  • 材料×工艺×AI:猎板PCB重构汽车电子四层板技术逻辑
  • [滑动窗口]越短越合法(可转化成越长越合法)
  • docker-compose的使用总结
  • 鄂州交警通报致1死2伤车祸:女子操作不当引发,已被刑拘
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保
  • “救护车”半路加价?陕西卫健委已介入,记者调查:黑救护车挤占市场
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 欧元区财长会讨论国际形势及应对美国关税政策
  • 工人日报评规范隐藏式车门把手:科技美学须将安全置顶