關(guān)于uniApp editor微信滑動(dòng)問題
uniapp 小程序在微信下會(huì)出現(xiàn)類似下拉問題

解決方法是在app.vue 的頁面onLaunch方法內(nèi)添加禁止下滑方法
this.$nextTick(() => {
document.body.addEventListener("touchmove", this.addBodyTouchEvent, {
passive: false
});
});
問題解決后在uniApp的editor組件內(nèi)無法滑動(dòng)

解決方法

data內(nèi)添加這兩個(gè)值

添加touchstart和touchend方法手動(dòng)寫滑動(dòng)效果
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;
}
//距離太短時(shí)不滾動(dòng)
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); //計(jì)算應(yīng)該高度數(shù)據(jù)
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;
}
}
此時(shí)滑動(dòng)效果出現(xiàn)。但是滑動(dòng)出不流暢。
本想著寫動(dòng)畫過渡效果。但是。這個(gè)滑動(dòng)是用dom.scrollTop屬性做的。該屬性不屬于css屬性無法使用css過渡動(dòng)畫
所以寫了一個(gè)js方法。
/**
* 動(dòng)畫垂直滾動(dòng)到頁面指定位置
* @param { } dom element對(duì)象
* @param { Number } currentY 當(dāng)前位置
* @param { Number } targetY 目標(biāo)位置
*/
export function scrollAnimation(dom, currentY, targetY) {
// 計(jì)算需要移動(dòng)的距離
let needScrollTop = targetY - currentY;
let _currentY = currentY;
setTimeout(() => {
// 一次調(diào)用滑動(dòng)幀數(shù),每次調(diào)用會(huì)不一樣
const dist = Math.ceil(needScrollTop / 10);
_currentY += dist;
dom.scrollTo(_currentY, currentY);
// 如果移動(dòng)幅度小于十個(gè)像素,直接移動(dòng),否則遞歸調(diào)用,實(shí)現(xiàn)動(dòng)畫效果
if (needScrollTop > 10 || needScrollTop < -10) {
scrollAnimation(dom, _currentY, targetY);
} else {
dom.scrollTo(_currentY, targetY);
}
}, 1);
}
重新調(diào)用
touchend(e) {
let distance = e.changedTouches[0].pageY - this.previewScrollTop;
if (Math.abs(distance) <= 10) {
return false;
}
//距離太短時(shí)不滾動(dòng)
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); //計(jì)算應(yīng)該高度數(shù)據(jù)
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);
}
}
備注一下:
這個(gè)問題本來打算用Transform:translateY(y)屬性來寫的,實(shí)際上也做了。
但是在做了之后發(fā)現(xiàn)
let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0];

這里選中的元素是紅框下面的元素。在做偏移的時(shí)候整個(gè)元素偏移。文檔沒顯示完全但是下方確有一大塊空白。當(dāng)時(shí)也沒截圖。記錄一下自己踩得坑。
到此這篇關(guān)于關(guān)于uniApp editor微信滑動(dòng)問題的文章就介紹到這了,更多相關(guān)uniApp editor微信滑動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Bootstrap 表單驗(yàn)證formValidation 實(shí)現(xiàn)表單動(dòng)態(tài)驗(yàn)證功能
這篇文章主要介紹了Bootstrap 表單驗(yàn)證formValidation 實(shí)現(xiàn)表單動(dòng)態(tài)驗(yàn)證功能,需要的朋友可以參考下2017-05-05
微信小程序tab切換可滑動(dòng)切換導(dǎo)航欄跟隨滾動(dòng)實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序tab切換可滑動(dòng)切換導(dǎo)航欄跟隨滾動(dòng)實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
JS?const關(guān)鍵字生成常量的三個(gè)特點(diǎn)介紹
這篇文章主要介紹了JS?const關(guān)鍵字生成常量有哪些特點(diǎn),下面通過代碼演示const關(guān)鍵字聲明的常量的塊級(jí)作用域效果,需要的朋友可以參考下2023-05-05
JavaScript JSON數(shù)據(jù)處理全集(小結(jié))
這篇文章主要介紹了JavaScript JSON數(shù)據(jù)處理全集,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫示例
這篇文章主要介紹了JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫,以首字母大寫,其它字母小寫為例,喜歡的朋友可以參考下2014-09-09
JS實(shí)現(xiàn)根據(jù)用戶輸入分鐘進(jìn)行倒計(jì)時(shí)功能
倒計(jì)時(shí)功能大家無論在各大網(wǎng)站都可以看到,今天小編給大家分享一段基于js實(shí)現(xiàn)的根據(jù)用戶輸入分鐘進(jìn)行倒計(jì)時(shí)功能,非常不錯(cuò),需要的朋友參考下吧2016-11-11

