关于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 相关文章推荐
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
JS解决url传值出现中文乱码的另类办法
Apr 08 Javascript
纯Javascript实现Windows 8 Metro风格实现
Oct 15 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
利用百度地图API获取当前位置信息的实例
Nov 06 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
js作用域及作用域链工作引擎
Jul 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
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
Python标准库内置函数complex介绍
2014/11/25 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python ubplot使用方法解析
2020/01/10 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
物业工作计划书
2014/01/10 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
学习雷锋活动总结
2014/04/29 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
课外活动总结
2015/02/04 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
中秋联欢会主持词
2015/07/04 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
详解Python为什么不用设计模式
2021/06/24 Python