关于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比较两个对象是否相等的方法
Feb 06 Javascript
Bootstrap每天必学之警告框插件
Apr 26 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
js输入框使用正则表达式校验输入内容的实例
Feb 12 Javascript
javascript 中的继承实例详解
May 05 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
详解如何使用 vue-cli 开发多页应用
Dec 16 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
学习Vue组件实例
Apr 28 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php支持中文字符串分割的函数
2015/05/28 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
详解python logging日志传输
2020/07/01 Python
python中如何使用虚拟环境
2020/10/14 Python
接口的多继承会带来哪些问题
2015/08/17 面试题
安全教育实施方案
2014/03/02 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
2014年党支部承诺书
2014/05/30 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL