热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Vue集成iScroll实现移动端表格横向滚动与固定列功能

滚动前:滚动后: 上代码 1.引入 iscrollnpm i iscroll --save 2.封装iscrollTable.js// 统一使用const IScollProbe = require(

滚动前:
在这里插入图片描述

滚动后:
在这里插入图片描述
上代码
1.引入 iscroll

npm i iscroll --save

2.封装iscrollTable.js

// 统一使用
const IScollProbe = require('iscroll/build/iscroll-probe');
let scroller = null;
let Selector = '';
export function createIScroller(selector) {
Selector = selector;
scroller = new IScollProbe(Selector, {
preventDefault: false, // 阻止浏览器滑动默认行为
probeType: 3, // 需要使用 iscroll-probe.js 才能生效 probeType : 1 滚动不繁忙的时候触发 probeType : 2 滚动时每隔一定时间触发 probeType : 3 每滚动一像素触发一次
mouseWheel: true, // 是否监听鼠标滚轮事件。
scrollX: true, // 启动x轴滑动
scrollY: true, // 启动y轴滑动
// momentum: false,
lockDirection: false,
snap: false, // 自动分割容器,用于制作走马灯效果等。Options.snap:true// 根据容器尺寸自动分割
// snapSpeed: 400,
scrollbars: false, // 是否显示默认滚动条
freeScroll: true, // 主要在上下左右滚动都生效时使用,可以向任意方向滚动。
deceleration: 0.0001, // 滚动动量减速越大越快,建议不大于 0.01,默认:0.0006
disableMouse: true, // 是否关闭鼠标事件探测。如知道运行在哪个平台,可以开启它来加速。
disablePointer: true, // 是否关闭指针事件探测。如知道运行在哪个平台,可以开启它来加速。
disableTouch: false, // 是否关闭触摸事件探测。如知道运行在哪个平台,可以开启它来加速。
eventPassthrough: false, // 使用 IScroll 的横轴滚动时,如想使用系统立轴滚动并在横轴上生效,请开启。
bounce: false, // 是否启用弹力动画效果,关掉可以加速
});
function updatePosition() {
const frozenCols = document.querySelectorAll(`${selector} table tr td.cols`);
const frozenRows = document.querySelectorAll(`${selector} table tr th.rows`);
const frozenCrosses = document.querySelectorAll(`${selector} table tr th.cross`);
for (let i = 0; i frozenCols[i].style.transform = `translate(${-1 * this.x}px, 0px) translateZ(0px)`;
}
for (let i = 0; i frozenRows[i].style.transform = `translate(0px, ${-1 * this.y}px) translateZ(0px)`;
}
for (let i = 0; i frozenCrosses[i].style.transform = `translate(${-1 * this.x}px,${-1 * this.y}px) translateZ(0px)`;
}
}
scroller.on('scroll', updatePosition);
scroller.on('scrollEnd', updatePosition);
scroller.on('beforeScrollStart', () => {
scroller.refresh();
});
return scroller;
}
export function refreshScroller() {
if (scroller === null) {
console.error('先初始化scroller');
return;
}
setTimeout(() => {
scroller.refresh();
scroller.scrollTo(0, 0);
const frozenCols = document.querySelectorAll(`${Selector} table tr td.cols`);
const frozenRows = document.querySelectorAll(`${Selector} table tr th.rows`);
const frozenCrosses = document.querySelectorAll(`${Selector} table tr th.cross`);
for (let i = 0; i frozenCols[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
}
for (let i = 0; i frozenRows[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
}
for (let i = 0; i frozenCrosses[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
}
}, 0);
}
export function destroyScroller() {
if (scroller === null) {
return;
}
scroller.destroy();
scroller = null;
}

3.html使用




如果需要设置多列固定,可参考如下方法。
在这里插入图片描述


推荐阅读
  • 开发技巧分享:利用套索与矩形选择工具高效选取绘图中的全部字形节点
    开发技巧分享:利用套索与矩形选择工具高效选取绘图中的全部字形节点 ... [详细]
  • 决策树在鸢尾花数据集上对不同特征组合的分类效果分析及模型性能比较
    本文探讨了决策树算法在鸢尾花数据集上的应用,分析了不同特征组合对分类效果的影响,并对模型性能进行了详细比较。决策树作为一种层次化的分类方法,通过递归地划分特征空间,形成树状结构,每个节点代表一个特征判断,最终达到分类目的。研究结果表明,不同特征组合对模型性能有显著影响,为实际应用提供了重要参考。 ... [详细]
  • Oracle培训(三十七)——深入解析Hibernate第三章:实体关联关系映射详解
    在本节Oracle培训中,我们将深入探讨Hibernate第三章的内容,重点讲解实体关联关系映射的详细知识点。首先,回顾了Hibernate的基本概念和映射基础,随后详细分析了不同类型的实体关联关系,包括一对一、一对多和多对多关系的映射方法及其应用场景。通过具体的示例和代码片段,帮助读者更好地理解和掌握这些复杂的映射技术。此外,还讨论了如何优化关联关系的性能,以及常见的问题和解决方案。 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • H3C防火墙自动构建安全隧道
    实验拓扑结构:两端采用静态IP地址配置。H3C防火墙能够自动构建IPSec安全隧道,确保数据传输的安全性。通过配置防火墙的非信任区域,实现自动化安全连接的建立与维护,有效提升网络防护能力。 ... [详细]
  • 本文深入探讨了Android事件分发机制的源代码,重点分析了DecorView作为Activity根布局的角色及其在事件传递中的作用。同时,详细解析了PhoneWindow在Activity窗口管理中的关键功能,以及它如何与DecorView协同工作,确保用户交互事件的高效处理。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
  • 多进程程序异常退出问题分析与解决 ... [详细]
  • 软件开发史上最具影响力的十位编程大师(附图解)
    在软件开发领域,有十位编程大师对行业发展产生了深远影响。本文基于国外知名社区的一项评选,通过图文并茂的形式,详细介绍了这十位杰出人物,包括游戏开发先驱John Carmack等,为读者呈现了他们卓越的技术贡献与创新精神。 ... [详细]
  • MySQL 5.6 引入了全局事务标识符(GTID)和多线程复制机制,显著提升了数据库的可靠性和性能。GTID 作为一种新的事务标识方式,确保了事务在主从节点间的一致性,避免了传统基于日志位置的复制可能出现的问题。多线程复制则通过并行处理多个复制任务,大幅提高了复制效率,特别是在大型数据库环境中表现更为突出。这些新特性不仅增强了 MySQL 的高可用性和扩展性,还为数据库管理带来了更多灵活性和便利性。 ... [详细]
  • 在PB数据窗口中,错误处理技术主要针对两类问题进行优化:一是由用户不当数据输入引发的错误,二是程序执行过程中因代码缺陷导致的异常。高效的应用程序设计需确保无论出现哪种类型的错误,系统都能有效应对,保证稳定性和用户体验。通过引入先进的错误检测与恢复机制,可以显著提升系统的健壮性和可靠性。 ... [详细]
  • c#学Java–Java基本语法1.类比JAVA .NETJVM CLRJDK  FCL2.java命名约定类名称应以大写字母开头,并成为容易理解的名词或组合。如 ... [详细]
  • 通过移除单一数字优化数据集 ... [详细]
  • 注:写博客或者项目的README文档经常用到markdown语法,所以markdown的语法做了一个总结,本文是基于【markdown】基 ... [详细]
author-avatar
weiwei
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有