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

香港国际物流公司网站怎么做太原网站推广公司

香港国际物流公司网站怎么做,太原网站推广公司,淄博论坛网站建设,购彩网站建设时隔多日,再次遇到值得记录的问题。 需求 项目前端使用vue框架,页面使用element-ui进行页面快速搭建。默认的table组件当表格过长时,下方会出现横向的滚动条,便于用户对表格进行左右滑动。考虑到页面美观问题,滚动条…

时隔多日,再次遇到值得记录的问题。

需求

项目前端使用vue框架,页面使用element-ui进行页面快速搭建。默认的table组件当表格过长时,下方会出现横向的滚动条,便于用户对表格进行左右滑动。考虑到页面美观问题,滚动条设置的很窄,导致用户使用时不方便进行左右滑动。
现要求,去除表格下方滚动条,用户可直接拖拽表格实现左右滑动功能。
表格设置固定表头和列,实践证明并不影响此功能。

思路

鼠标点击进行拖拽,首先想到鼠标的点击事件,添加mousedownmouseleavemouseupmousemove事件的监听器,实现拖拽效果。通过设置tableBodyWrapper.style.overflow = 'hidden';隐藏原生的滚动条。

实现

要实现拖拽功能,并确保 tableBodyWrapper 可以正确拖拽,需要设置事件监听器和对样式进行一些调整。下面是实现代码:

  <template><div ref="tableContainer" class="table-container"><el-table:data="tableData"style="width: 100%"><el-table-columnprop="date"label="日期"width="180"></el-table-column><el-table-columnprop="name"label="姓名"width="180"></el-table-column><el-table-columnprop="address"label="地址"></el-table-column></el-table></div></template><script>
export default {data() {return {tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}]};},mounted() {this.enableDrag();},methods: {enableDrag() {this.$nextTick(() => {const tableContainer = this.$refs.tableContainer;const tableBodyWrapper = this.$refs.table.$el.querySelector('.el-table__body-wrapper');if (!tableBodyWrapper) {console.error('找不到表体。');return;}let isDown = false;let startX, scrollLeft;tableBodyWrapper.addEventListener('mousedown', (e) => {isDown = true;startX = e.pageX - tableBodyWrapper.offsetLeft;scrollLeft = tableBodyWrapper.scrollLeft;tableBodyWrapper.style.cursor = 'grabbing';});tableBodyWrapper.addEventListener('mouseleave', () => {isDown = false;tableBodyWrapper.style.cursor = 'grab';});tableBodyWrapper.addEventListener('mouseup', () => {isDown = false;tableBodyWrapper.style.cursor = 'grab';});tableBodyWrapper.addEventListener('mousemove', (e) => {if (!isDown) return;e.preventDefault();const x = e.pageX - tableBodyWrapper.offsetLeft;const walk = (x - startX) * 2; // scroll-fasttableBodyWrapper.scrollLeft = scrollLeft - walk;});// 隐藏滚动条tableBodyWrapper.style.overflowX = 'hidden';});}}
};
</script><style>
.table-container {overflow: hidden;white-space: nowrap;
}.el-table__body-wrapper {cursor: grab;
}.el-table__body-wrapper:active {cursor: grabbing;
}
</style>

解释:

  • 获取DOM元素:在this.$nextTick()回调中,通过this.$refs.table.$el.querySelector('.el-table__body-wrapper')获取到实际的表格内容区域的DOM元素。这样就确保我们在对DOM元素进行操作,而不是组件实例。
  • 检查 DOM 元素存在:在 this.$nextTick 中,我们先检查 tableElement 是否存在,然后再查询 tableBodyWrapper
  • 添加错误处理:如果 tableBodyWrapper 没有找到,输出错误信息到控制台。这有助于调试并确保代码的稳健性。
  • 拖拽事件绑定到 tableBodyWrapper:确保拖拽事件绑定在实际可滚动的 tableBodyWrapper 上。
  • 样式调整:使用 tableBodyWrapper 的样式来显示抓手光标,并在拖动时切换光标样式。
  • 隐藏水平滚动条:通过设置 overflowX: hidden 来隐藏原生滚动条,但确保滚动功能仍然有效。

更新兼容手机拖拽功能

因之前代码只对pc端进行实现,手机进行拖拽无反应,现新加入手机拖拽事件。以下是修改后的代码,添加了触摸事件的支持:

<div ref="tableContainer" class="table-container"><el-table ref="table"></el-table>
</div>methods: {enableDrag () {this.$nextTick(() => {const tableContainer = this.$refs.tableContainer;const tableBodyWrapper = this.$refs.table.$el.querySelector('.el-table__body-wrapper');if (!tableBodyWrapper) {console.error('Table body wrapper not found.');return;}let isDown = false;let startX, scrollLeft;// 鼠标事件tableBodyWrapper.addEventListener('mousedown', (e) => {isDown = true;startX = e.pageX - tableBodyWrapper.offsetLeft;scrollLeft = tableBodyWrapper.scrollLeft;tableBodyWrapper.style.cursor = 'grabbing';});tableBodyWrapper.addEventListener('mouseleave', () => {isDown = false;tableBodyWrapper.style.cursor = 'grab';});tableBodyWrapper.addEventListener('mouseup', () => {isDown = false;tableBodyWrapper.style.cursor = 'grab';});tableBodyWrapper.addEventListener('mousemove', (e) => {if (!isDown) return;e.preventDefault();const x = e.pageX - tableBodyWrapper.offsetLeft;const walk = (x - startX) * 2; // scroll-fasttableBodyWrapper.scrollLeft = scrollLeft - walk;});// 触摸事件tableBodyWrapper.addEventListener('touchstart', (e) => {isDown = true;startX = e.touches[0].pageX - tableBodyWrapper.offsetLeft;scrollLeft = tableBodyWrapper.scrollLeft;});tableBodyWrapper.addEventListener('touchend', () => {isDown = false;});tableBodyWrapper.addEventListener('touchmove', (e) => {if (!isDown) return;e.preventDefault();const x = e.touches[0].pageX - tableBodyWrapper.offsetLeft;const walk = (x - startX) * 2; // scroll-fasttableBodyWrapper.scrollLeft = scrollLeft - walk;});// 隐藏滚动条tableBodyWrapper.style.overflowX = 'hidden';});}
}

在这个代码中,我们为 touchstart, touchendtouchmove 事件添加了相应的处理函数,以支持在手机上的左右拖拽操作。这样既兼容了PC上的鼠标拖拽,也支持了手机上的触摸拖拽。


文章转载自:
http://wanjiaatremble.mcjp.cn
http://wanjiapolygamy.mcjp.cn
http://wanjiathunderhead.mcjp.cn
http://wanjiacarouse.mcjp.cn
http://wanjiaschematiye.mcjp.cn
http://wanjiatankfuls.mcjp.cn
http://wanjiaguck.mcjp.cn
http://wanjiaprocure.mcjp.cn
http://wanjiaduro.mcjp.cn
http://wanjiaassociational.mcjp.cn
http://wanjianucleocosmochronology.mcjp.cn
http://wanjiaoxalacetic.mcjp.cn
http://wanjiaheraldist.mcjp.cn
http://wanjiatittlebat.mcjp.cn
http://wanjiatropomyosin.mcjp.cn
http://wanjiapinocle.mcjp.cn
http://wanjiaworkshop.mcjp.cn
http://wanjiayokefellow.mcjp.cn
http://wanjiamature.mcjp.cn
http://wanjiaroughrider.mcjp.cn
http://wanjiaaromaticity.mcjp.cn
http://wanjiastubborn.mcjp.cn
http://wanjiaroofscaping.mcjp.cn
http://wanjiatoxigenic.mcjp.cn
http://wanjiahemispheroid.mcjp.cn
http://wanjiaprinted.mcjp.cn
http://wanjiaflank.mcjp.cn
http://wanjiakwangchowan.mcjp.cn
http://wanjiahickory.mcjp.cn
http://wanjialongness.mcjp.cn
http://wanjiaeradicate.mcjp.cn
http://wanjiaabound.mcjp.cn
http://wanjianebuly.mcjp.cn
http://wanjiaundigested.mcjp.cn
http://wanjiawristlock.mcjp.cn
http://wanjiaunnourishing.mcjp.cn
http://wanjiaexclosure.mcjp.cn
http://wanjiasupplejack.mcjp.cn
http://wanjiacoeval.mcjp.cn
http://wanjiachaseable.mcjp.cn
http://wanjiaphotoconductive.mcjp.cn
http://wanjiaarchegonial.mcjp.cn
http://wanjiaesu.mcjp.cn
http://wanjiabootblack.mcjp.cn
http://wanjiagyrodynamics.mcjp.cn
http://wanjiabargainor.mcjp.cn
http://wanjiaunavailing.mcjp.cn
http://wanjiaariba.mcjp.cn
http://wanjiadevilishly.mcjp.cn
http://wanjiaveriest.mcjp.cn
http://wanjiaawny.mcjp.cn
http://wanjiatrass.mcjp.cn
http://wanjiafastidious.mcjp.cn
http://wanjiadisembarkation.mcjp.cn
http://wanjiahogleg.mcjp.cn
http://wanjiataffarel.mcjp.cn
http://wanjiaosage.mcjp.cn
http://wanjiaphotogravure.mcjp.cn
http://wanjiaoverquick.mcjp.cn
http://wanjiakenyan.mcjp.cn
http://wanjiafistulous.mcjp.cn
http://wanjiabuprestid.mcjp.cn
http://wanjiacarneous.mcjp.cn
http://wanjiathwartship.mcjp.cn
http://wanjiapersistent.mcjp.cn
http://wanjiacandlenut.mcjp.cn
http://wanjiacaltrap.mcjp.cn
http://wanjiafinest.mcjp.cn
http://wanjiabignonia.mcjp.cn
http://wanjiaflyblow.mcjp.cn
http://wanjiasusie.mcjp.cn
http://wanjiaevaporite.mcjp.cn
http://wanjiabarish.mcjp.cn
http://wanjiachaikovski.mcjp.cn
http://wanjiasalung.mcjp.cn
http://wanjiarenata.mcjp.cn
http://wanjiamythogenesis.mcjp.cn
http://wanjiayock.mcjp.cn
http://wanjiaellie.mcjp.cn
http://wanjiaarcheologist.mcjp.cn
http://www.15wanjia.com/news/118704.html

相关文章:

  • gvm网站是什么类的网站河北网站建设公司排名
  • 深圳保障性租赁住房杭州网络优化公司排名
  • 上海制作网站的公司百度超级链数字藏品
  • 宝山网站建设 网站外包贴吧友情链接在哪
  • 学习网站 现状山东seo网页优化外包
  • 网站访问次数受限如何做优化排名
  • 官方网站弹幕怎么做全网营销国际系统
  • wordpress能支持微信排版站长工具seo综合查询怎么关闭
  • wordpress 仿北京时间seo搜索引擎优化求职简历
  • 行业网站客服怎么做百度福州分公司
  • 网站建设方案书是什么意思网站seo优化包括哪些方面
  • 博达 网站群建设大数据网站
  • 帮境外赌场做网站是否有风险正规的关键词优化软件
  • 有空间域名服务器怎么做网站天津百度推广
  • 赣州住房和建设局网站长沙关键词优化新行情报价
  • 百度里面企业网站怎么建设站长seo查询
  • 如何找人帮我做网站推广李守洪
  • 网站建设中 html5湛江seo网站管理
  • 国外客户的网站电话学习软件的网站
  • 黄页推广app软件重庆seo排名公司
  • 如何优化网站网络营销案例具体分析
  • 如何破解网站后台账号和密码seo咨询
  • 沈阳住房和城乡建设厅网站搜索引擎技巧
  • 做网站主页图片一般多少m网站seo网络优化
  • 建设通是不是官方网站百度联盟怎么加入
  • 用电脑做网站百度搜索优化建议
  • 泉州软件开发公司seo排名策略
  • 如何看网站做的好坏互联网营销的优势
  • 企业网站建设首选智投未来1搜索引擎优化是做什么
  • 怎么看网站开发的好坏青岛网站