uniapp中實(shí)現(xiàn)canvas超出屏幕滾動(dòng)查看功能
親愛(ài)的小伙伴,當(dāng)你需要在uniapp中使用canvas繪制一個(gè)超長(zhǎng)圖,就類似于橫向的流程圖時(shí),這個(gè)canvas超出屏幕部分拖動(dòng)屏幕查看會(huì)變得十分棘手。我查閱了大量資料,甚至是問(wèn)了無(wú)數(shù)遍AI,得到的結(jié)果只有很敷衍的監(jiān)聽touch,然后計(jì)算偏移量,然后重繪??墒?,你想想,如果一次繪圖里邊有成百上千個(gè)元素,還有很大的圖片,你重繪?那不得卡死。終于,在一次詢問(wèn)AI時(shí)給了我一絲曙光,并且實(shí)踐告訴我,這個(gè)方法絕對(duì)管用!
1.使用scroll-view嵌套canvas,官網(wǎng)是說(shuō)不許嵌套的,但是我們可以另辟蹊徑,滾動(dòng)的關(guān)鍵就再這個(gè)onTouchMove方法中
<scroll-view ref="scrollView" scroll-x scroll-y style="height: 100vh;" @touchmove="onTouchMove"> <canvas canvas-id="myCanvas" id="myCanvas" @tap="handleCanvasTap" ref="myCanvas" style="width: 5000rpx; height: 200vh"></canvas> </scroll-view>
2.定義參數(shù)
data(){ retrun{ startX: 0, startY: 0, offsetX: 0, offsetY: 0, context: null, endX: 0, endY: 0, isMoving: false, } }
3.關(guān)鍵方法
onTouchMove(e){ if (this.isMoving) { const deltaX = e.touches[0].clientX - this.startX; const deltaY = e.touches[0].clientY - this.startY; const query = uni.createSelectorQuery().in(this); query.select('#myCanvas').boundingClientRect().exec((res) => { const canvas = res[0].node; canvas.style.transform = `translate(${deltaX}px, ${deltaY}px)`; }); this.endX = e.touches[0].clientX; this.endY = e.touches[0].clientY; } }
4.你的canvas屬性要跟的我一致,包你成功!
到此這篇關(guān)于uniapp中實(shí)現(xiàn)canvas超出屏幕滾動(dòng)查看的文章就介紹到這了,更多相關(guān)uniapp canvas滾動(dòng)查看內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- uniapp中scroll-view實(shí)現(xiàn)自動(dòng)滾動(dòng)到最底部的方法
- uniapp禁止遮罩層下頁(yè)面滾動(dòng)的解決方法
- uniapp微信小程序與H5的彈窗滾動(dòng)穿透解決方法
- uniapp幾行代碼解決滾動(dòng)穿透問(wèn)題(項(xiàng)目實(shí)戰(zhàn))
- uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期
- uniapp中canvas繪制圖片內(nèi)容空白報(bào)錯(cuò)的原因及解決
- Vue和uniapp中該如何使用canvas詳解
- uniapp封裝canvas組件無(wú)腦繪制保存小程序分享海報(bào)
相關(guān)文章
JavaScript中window和document用法詳解
這篇文章主要介紹了JavaScript中window和document用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07JS實(shí)現(xiàn)旋轉(zhuǎn)木馬式圖片輪播效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)旋轉(zhuǎn)木馬式圖片輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01javascript實(shí)時(shí)顯示北京時(shí)間的方法
這篇文章主要介紹了javascript實(shí)時(shí)顯示北京時(shí)間的方法,涉及javascript操作時(shí)間顯示的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03JavaScript利用crypto模塊實(shí)現(xiàn)加解密
crypto模塊提供了加密功能,包含對(duì) OpenSSL 的哈希、HMAC、加密、解密、簽名、以及驗(yàn)證功能的一整套封裝。本文將利用它實(shí)現(xiàn)加解密算法,需要的可以參考一下2023-02-02