关于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 相关文章推荐
超级退弹代码
Jul 07 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
js使用ajax读博客rss示例
May 06 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
js断点调试经验分享
Dec 08 Javascript
10个在JavaScript开发中常遇到的BUG
Dec 18 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 Javascript
前端如何实现动画过渡效果
Feb 05 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/06/09 PHP
基于php iconv函数的使用详解
2013/06/09 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
Python解决鸡兔同笼问题的方法
2014/12/20 Python
python检测远程udp端口是否打开的方法
2015/03/14 Python
python xml解析实例详解
2016/11/14 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
类如何去实现接口
2013/12/19 面试题
语文课外活动总结
2014/08/27 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
奖学金个人总结
2015/03/04 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS