关于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 相关文章推荐
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
jquery使用hide方法隐藏指定id的元素
Mar 30 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
浅谈React碰到v-if
Nov 04 Javascript
详解用async/await来处理异步
Aug 28 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
Dec 08 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
手写实现JS中的new
Nov 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php explode函数实例代码
2012/02/27 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
11款基于Javascript的文件管理器
2009/10/25 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python 实现向word(docx)中输出
2020/02/13 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
python用Configobj模块读取配置文件
2020/09/26 Python
钳工实习自我鉴定
2013/09/19 职场文书
行政总监岗位职责
2013/12/05 职场文书
电子商务个人自荐信
2013/12/12 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
敬老模范事迹
2014/05/21 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2015年新学期寄语
2015/02/26 职场文书
二审答辩状范文
2015/05/22 职场文书