• <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)下載排行

        主站蜘蛛池模板: 麻花传媒剧在线mv免费观看| 亚洲砖码砖专无区2023| 青青草97国产精品免费观看| 成年人免费网站在线观看| 亚洲另类小说图片| 国产情侣激情在线视频免费看| 国产福利在线观看永久免费| 东北美女野外bbwbbw免费| 亚洲国产中文字幕在线观看| 免费在线人人电影网| 久久久久一级精品亚洲国产成人综合AV区| 日韩在线观看免费完整版视频| 国产无遮挡吃胸膜奶免费看| 久久亚洲精品成人| 免费网站看av片| 亚洲色图校园春色| 四虎成人免费观看在线网址| 美女18毛片免费视频| 亚洲午夜福利AV一区二区无码| 大地资源在线资源免费观看| 国产特级淫片免费看| 免费播放国产性色生活片| 亚洲精品亚洲人成人网| 亚洲色大情网站www| 日韩免费福利视频| 国产免费AV片在线观看播放| 久久精品国产亚洲| 三年片在线观看免费观看高清电影 | 特黄aa级毛片免费视频播放| 91麻豆精品国产自产在线观看亚洲 | 国产男女性潮高清免费网站| 抽搐一进一出gif免费视频| 亚洲无线电影官网| 野花香在线视频免费观看大全| 亚洲自偷自偷精品| 免费黄色app网站| 一个人免费视频观看在线www| 亚洲AV无码精品蜜桃| 亚洲精品视频在线看| 91久久青青草原线免费| 久久精品国产亚洲AV无码娇色|