900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Vue+element table+原生js +touch触摸事件实现移动端横向拖动

Vue+element table+原生js +touch触摸事件实现移动端横向拖动

时间:2019-10-11 20:00:14

相关推荐

Vue+element table+原生js +touch触摸事件实现移动端横向拖动

Vue+element table+原生js +touch触摸事件实现移动端横向拖动

今天做移动端项目时,想加个表格展示数据,但是调试的时候发现,表格数据很多时,想要触屏左右滑动内容,但是滑动不了,又不想引用插件实现,只好自己写个拖拽事件了

<el-cardshadow="never"v-show="tableCardTitle"class="table-wrapper"><div slot="header" class="clearfix"><span>{{tableCardTitle }}</span></div><el-table :data="tableData" stripe ><el-table-column:prop="item.key":label="item.name"v-for="(item, index) in tableLabel":key="index"></el-table-column></el-table></el-card>

updated() {this.addrag();}methods: {addDrag() {const tableWrapperEls = document.querySelector(".el-card__body");console.log(tableWrapperEls);const tableEls = document.querySelector(".el-table--scrollable-x .el-table__body-wrapper");console.log(tableEls);let isDragging = false; // 是否正在拖动let startX = 0; // 拖动开始的X坐标let scrollLeft = 0; // 横向滚动的距离tableWrapperEls.addEventListener("touchstart", (e) => {isDragging = true;startX = e.touches[0].pageX - tableWrapperEls.offsetLeft;scrollLeft = tableEls.scrollLeft;});tableWrapperEls.addEventListener("touchmove", (e) => {if (!isDragging) return;e.preventDefault();//阻止默认行为const x = e.touches[0].pageX - tableWrapperEls.offsetLeft;const walk = (x - startX) * 2; // 控制拖动速度tableEls.scrollLeft = scrollLeft - walk;});tableWrapperEls.addEventListener("touchend", () => {isDragging = false;});},}

<style scoped>.table-wrapper {overflow-x: auto;-webkit-overflow-scrolling: touch;}</style>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。