• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 蘋果教程教程 > 詳細頁面

        詳細說明mpvue完成對蘋果X安全區(qū)域的適配_vue.js

        詳細說明mpvue完成對蘋果X安全區(qū)域的適配_vue.js

        更新時間:2024-04-12 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        導(dǎo)一、業(yè)務(wù)背景最近在利用mpvue+ts開發(fā)小程序的過程中,由于蘋果X等手機會出現(xiàn)底部的按鈕,會遮蓋掉需要操作的按鈕。由于在小程序開發(fā),微信爸爸已經(jīng)做了對機型的檢查,相對與H5的處理來說方便很多了。下...

        一、業(yè)務(wù)背景

        最近在利用mpvue+ts開發(fā)小程序的過程中,由于蘋果X等手機會出現(xiàn)底部的按鈕,會遮蓋掉需要操作的按鈕。由于在小程序開發(fā),微信爸爸已經(jīng)做了對機型的檢查,相對與H5的處理來說方便很多了。下面就稍微羅列一下解決方案。

        二、實現(xiàn)思路

        1. 判斷機型方法
        2. 注入全局組件mixin
        3. 加入全局安全距離css
        4. 頁面上進行class類處理

        三、實現(xiàn)過程

        1、判斷機型方法

        小程序的官方文檔提供了一個方法wx.getSystemInfo,我們可以利用該方法來對小程序的對應(yīng)的手機型號進行判斷,是否需要加上安全距離。在工具類文件新建safe-area.js文件,編寫下面代碼,這里返回一個Project,方便取值。

        let cache = null;
        export default function getSafeArea() {
          return new Promise((resolve, reject) => {
            if (cache != null) {
            // 如果有緩存不行行調(diào)用
              resolve(cache);
            }
            else {
            // 獲取系統(tǒng)信息
              wx.getSystemInfo({
                success: ({ model, screenHeight, statusBarHeight }) => {
                  const iphoneX = /iphone x/i.test(model);
                  const iphoneNew = /iPhone11/i.test(model) && screenHeight === 812;
                  cache = {
                    isIPhoneX: iphoneX || iphoneNew,
                    statusBarHeight
                  };
                  resolve(cache);
                },
                fail: reject
              });
            }
          });
        }
        

        2、注入全局組件mixin

        因為mpvue是具有mixin這個屬性的,我們可以利用混入安全距離的處理方法。用法基本跟vue一致。新建mixins.js,注入插件,在這個過程中需要注意一點,就是如果不進行頁面類型的判斷,會出現(xiàn)如果引用組件也會進行注入該方法。所以需要加入進行判斷

         Vue.prototype.$isPage = function isPage() {
          return this.$mp && this.$mp.mpType === 'page'
         }

        在mounted過程中進行處理,可以避免不必要的注入。

        import getSafeArea from '../utils/safe-area'
        let MyPlugin = {};
        MyPlugin.install = function (Vue) {
         // 添加全局方法或?qū)傩?
         Vue.prototype.$isPage = function isPage() {
          return this.$mp && this.$mp.mpType === 'page'
         }
         // 注入組件
         Vue.mixin({
          data() {
           return {
            isIPhoneX: this.isIPhoneX,
           }
          },
          mounted() {
           if (this.$isPage()) {
            getSafeArea().then(({ isIPhoneX, statusBarHeight }) => {
             this.isIPhoneX = isIPhoneX
            });
           }
          }
         })
        }
        export default MyPlugin
        

        在main.js中注冊該插件

        import MyPlugin from './minxins'
        Vue.use(MyPlugin)
        

        3、加入全局安全距離css

        為了我們不需要在每一個文件進行樣式的聲明,我們可以在全局樣式中寫入安全距離的類

        .safeArea {
         padding-bottom: 34px!important;
        }

        4、頁面上進行class類處理

        處理完以上部分我們可以對頁面上需要處理的區(qū)域,加入:class="{safeArea: isIPhoneX}"進行修改,例如:

          <div class="handle" :class="{safeArea: isIPhoneX}">
           <div class="home" @click="goHome"></div>
           <div class="submit" @click="buy">立即購買</div>
          </div>
        
        

        以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。

        您可能感興趣的文章:
        • 詳解基于mpvue的小程序markdown適配解決方案


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产一区二区三区亚洲综合| 亚洲中文无码a∨在线观看| 国产国产人免费视频成69堂| 91av视频免费在线观看| 岛国av无码免费无禁网站| 免费一级成人毛片| 亚洲AV日韩AV天堂久久| 亚洲av无码片在线观看| 韩国免费一级成人毛片| 亚洲精品高清国产一线久久| 亚洲一区二区三区不卡在线播放| www.黄色免费网站| 久久被窝电影亚洲爽爽爽 | 91福利免费体验区观看区| 亚洲国产日韩一区高清在线| 亚洲av纯肉无码精品动漫| 免费毛片在线看不用播放器| 成人影片麻豆国产影片免费观看| 涩涩色中文综合亚洲| 在线看片免费人成视频福利| 亚洲黄色网址在线观看| 免费一区二区无码视频在线播放 | 亚洲AV无码精品无码麻豆| 日韩亚洲翔田千里在线| a拍拍男女免费看全片| 亚洲桃色AV无码| 精品亚洲成在人线AV无码| 国产美女做a免费视频软件| 亚洲高清免费在线观看| AV片在线观看免费| 成人一级免费视频| 成年女人永久免费观看片| 久久综合亚洲色一区二区三区| 无码日韩精品一区二区免费| 国产产在线精品亚洲AAVV| 国产亚洲免费的视频看| 永久免费av无码网站韩国毛片| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 亚洲综合色视频在线观看| 亚洲成a人无码亚洲成av无码| 免费观看激色视频网站bd|