关于uniApp editor微信滑动问题


Posted in Javascript onJanuary 15, 2021

uniapp 小程序在微信下会出现类似下拉问题

关于uniApp editor微信滑动问题

解决方法是在app.vue 的页面onLaunch方法内添加禁止下滑方法

this.$nextTick(() => {
document.body.addEventListener("touchmove", this.addBodyTouchEvent, {
passive: false
});
});

问题解决后在uniApp的editor组件内无法滑动

关于uniApp editor微信滑动问题

解决方法

关于uniApp editor微信滑动问题

data内添加这两个值

关于uniApp editor微信滑动问题

添加touchstart和touchend方法手动写滑动效果

touchstart(e) {
this.previewScrollTop = e.touches[0].pageY;
},
touchend(e) {
let distance = e.changedTouches[0].pageY - this.previewScrollTop;
if (Math.abs(distance) <= 10) {
return false;
}
//距离太短时不滚动
let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), //最大高度范围
tempData = this.scrollTop + (distance >= 0 ? -60 : 60); //计算应该高度数据
if (tempData >= maxHeight) {
this.scrollTop = maxHeight;
dom.scrollTop = this.scrollTop;
} else if (tempData <= 0) {
this.scrollTop = 0;
dom.scrollTop = this.scrollTop;
} else {
this.scrollTop = tempData;
dom.scrollTop = this.scrollTop;
}
}

此时滑动效果出现。但是滑动出不流畅。

本想着写动画过渡效果。但是。这个滑动是用dom.scrollTop属性做的。该属性不属于css属性无法使用css过渡动画

所以写了一个js方法。

/**
* 动画垂直滚动到页面指定位置
* @param { } dom element对象
* @param { Number } currentY 当前位置
* @param { Number } targetY 目标位置
*/
export function scrollAnimation(dom, currentY, targetY) {
// 计算需要移动的距离
let needScrollTop = targetY - currentY;
let _currentY = currentY;
setTimeout(() => {
// 一次调用滑动帧数,每次调用会不一样
const dist = Math.ceil(needScrollTop / 10);
_currentY += dist;
dom.scrollTo(_currentY, currentY);
// 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果
if (needScrollTop > 10 || needScrollTop < -10) {
scrollAnimation(dom, _currentY, targetY);
} else {
dom.scrollTo(_currentY, targetY);
}
}, 1);
}

重新调用

touchend(e) {
let distance = e.changedTouches[0].pageY - this.previewScrollTop;
if (Math.abs(distance) <= 10) {
return false;
}
//距离太短时不滚动
let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), //最大高度范围
tempData = this.scrollTop + (distance >= 0 ? -60 : 60); //计算应该高度数据
if (tempData >= maxHeight) {
this.scrollTop = maxHeight;
dom.scrollTop = this.scrollTop;
} else if (tempData <= 0) {
this.scrollTop = 0;
dom.scrollTop = this.scrollTop;
} else {
this.scrollTop = tempData;
scrollAnimation(dom, 0, this.scrollTop);
}
}

备注一下:

这个问题本来打算用Transform:translateY(y)属性来写的,实际上也做了。

但是在做了之后发现

let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0];

关于uniApp editor微信滑动问题

这里选中的元素是红框下面的元素。在做偏移的时候整个元素偏移。文档没显示完全但是下方确有一大块空白。当时也没截图。记录一下自己踩得坑。

到此这篇关于关于uniApp editor微信滑动问题的文章就介绍到这了,更多相关uniApp editor微信滑动内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
小议javascript 设计模式 推荐
Oct 28 Javascript
js DOM模型操作
Dec 28 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
Apr 07 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
JQuery实现超链接鼠标提示效果的方法
Jun 10 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
vue实现树形菜单效果
Mar 19 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
May 24 Javascript
vue多个元素的样式选择器问题
Nov 29 Javascript
利用H5api实现时钟的绘制(javascript)
Sep 13 Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 #Javascript
详解node.js创建一个web服务器(Server)的详细步骤
Jan 15 #Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 #Javascript
js中延迟加载和预加载的具体使用
Jan 14 #Javascript
JS中箭头函数与this的写法和理解
Jan 14 #Javascript
JavaScript this关键字的深入详解
Jan 14 #Javascript
Vue实现多页签组件
Jan 14 #Vue.js
You might like
php 正则 过滤html 的超链接
2009/06/02 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
python检测lvs real server状态
2014/01/22 Python
Python操作json数据的一个简单例子
2014/04/17 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
Python常用外部指令执行代码实例
2020/11/05 Python
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
经典的班主任推荐信
2013/10/28 职场文书
房地产销售大学生自我评价分享
2013/11/11 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
入股协议书范本
2014/04/14 职场文书
老公给老婆的保证书
2014/04/28 职场文书
表扬稿格式范文
2015/01/16 职场文书