微信小程序使用ucharts在小程序中加入橫屏展示功能的全過程
前言
由于手機屏幕寬度的限制,當數據量較大時,觀看體驗并不是很好,因此橫屏展示的功能就顯得必要了,還好ucharts官方提供了橫屏展示的功能,可以免去自己手改的麻煩,不過在實現的時候還是需要注意一些地方。
本文只貼出了部分關鍵實現代碼而非全部代碼,僅提供思路和實現參考。
實現思路
開啟橫屏顯示的配置如下:
opts: { rotate: true, }
現在只需要在頁面中提供一個按鈕作為入口,動態(tài)改變opts.rotate的值,然后提供一個用來橫屏展示的容器就可以了。
實現步驟
1. 添加一個按鈕用來開啟橫屏模式
用一個iconfont圖標作為一個按鈕顯示:
<view class="rotate-mode-btn iconfont icon-a-appenlarge" @click="rotateMode"></view>
設置一下按鈕的樣式,放在一個合適的位置:
.icon-a-appenlarge { position: absolute; right: -20rpx; bottom: 200rpx; background: transparent; color: #a7c2fa; }
2. 準備一個容器
準備的容器應該覆蓋在其它所有組件(除了頂部導航)之上,可以自己寫一個容器,或者使用第三方組件達成目的。
在這里我使用了uView組件庫的遮罩層作為容器:uView-Vue3.0版
最后,為了能夠退出橫屏模式,在橫屏狀態(tài)下的右上角添加一個退出按鈕。
代碼如下:
<u-mask :show="isShowRotate"> <view :class="maskClass"> <view class="iconfont icon-close" @click="closeRotateMode"></view> </u-mask>
關鍵代碼釋義
:show="isShowRotate"
是顯示和隱藏遮罩層的屬性。通過第一步中綁定的方法rotateMode
實現,代碼如下:
// 開啟橫屏模式 rotateMode() { this.isShowRotate = true // 隱藏底部導航 uni.hideTabBar() },
@click="closeRotateMode"
用來關閉遮罩層,并將數據清空,顯示底部導航欄:
closeRotateMode() { this.isShowRotate = false this.chartsData_rotate = {} uni.showTabBar() }
<view :class="maskClass">"
:maskClass是一個計算屬性,用來顯示/隱藏容器,相關scss如下,僅供參考。
.mask-wrapper { width: 95%; height: 0; position: absolute; left: 8px; bottom: 20px; &.show { height: calc(100% - 120px); } }
結果如下:
3.將圖表放入容器中
<view class="tabel-charts-rotate"> <u-mask :show="isShowRotate"> <view :class="maskClass"> <qiun-data-charts :type="chartsShowType" :chartData="chartsData_rotate" :opts="opts_rotate" :ontouch="true" :onzoom="true" :canvas2d="Boolean($config.data.canvas2d)" :canvasId="canvasId_rotate" tooltipFormat="formatTooltipData" :reshow="isShowRotate" :inScrollView="true" /> </view> <view class="iconfont icon-close" @click="closeRotateMode"></view> </u-mask> </view>
rotateMode() { this.isShowRotate = true // 設置1s延時,避免渲染出錯 setTimeout(() => { this.chartsData_rotate = JSON.parse(JSON.stringify(this.chartsData)) }, 1000) // 隱藏底部導航 uni.hideTabBar() },
關鍵代碼釋義
this.chartsData_rotate = JSON.parse(JSON.stringify(this.chartsData))
這段代碼是用來深拷貝原圖表數據的,因為如果橫屏的圖表使用和原來的圖表同樣的數據的話,會和原圖表數據互相干擾。
<qiun-data-charts>
是ucharts組件,其中的屬性由自己的需求決定,這里進行部分說明。
:type="chartsShowType"
:動態(tài)改變圖表類型。
tooltipFormat="formatTooltipData"
:提示框格式化方法。
:inScrollView="true"
:圖表組件外部包裹了一個<scroll-view>
組件,需要將該屬性設為true,否則會出現提示框定位問題。
:reshow="isShowRotate"
:觸發(fā)圖表重繪。
最終效果如下:
總結
到此這篇關于微信小程序使用ucharts在小程序中加入橫屏展示功能的全過程的文章就介紹到這了,更多相關ucharts在小程序加入橫屏展示內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
javascript中關于執(zhí)行環(huán)境的雜談
如你所知,javascript里執(zhí)行環(huán)境是作為一個最核心的概念存在的。相信廣大FE筒子們對于這個概念不會陌生,它定義了變量或函數有權訪問其他數據范圍以及其行為。2011-08-08JavaScript對象拷貝與Object.assign用法實例分析
這篇文章主要介紹了JavaScript對象拷貝與Object.assign用法,結合實例形式分析了javascript深拷貝與淺拷貝以及Object.assign的功能與相關使用技巧,需要的朋友可以參考下2018-06-06