关于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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
jQuery实现tab标签自动切换的方法
Feb 28 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
基于jQuery实现的打字机效果
Jan 16 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 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 数据库字段复用的基本原理与示例
2011/07/22 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
require.js中的define函数详解
2017/07/10 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
干部行政关系介绍信
2014/01/17 职场文书
大学运动会通讯稿
2014/01/28 职场文书
个人作风剖析材料
2014/02/02 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
从原生JavaScript到React深入理解
2022/07/23 Javascript