关于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 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 18 Javascript
$(document).ready(function() {})不执行初始化脚本
Jun 19 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
JavaScript+html5 canvas实现本地截图教程
Apr 16 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
vue中导出Excel表格的实现代码
Oct 18 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
js实现图片上传到服务器和回显
Jan 19 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php实现的递归提成方案实例
2015/11/14 PHP
理解JavaScript中的事件
2006/09/23 Javascript
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
layui使用label标签的方法
2019/09/14 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
python3 map函数和filter函数详解
2019/08/26 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
深入分析python 排序
2020/08/24 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
搞笑获奖感言
2014/01/30 职场文书
职工运动会邀请函
2014/02/02 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
职工年度考核评语
2014/12/31 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
讲解MySQL增删改操作
2022/05/06 MySQL