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

        主站蜘蛛池模板: ASS亚洲熟妇毛茸茸PICS| 亚洲色欲色欲www| 一级特黄aaa大片免费看| 国产色爽免费视频| 亚洲欧美中文日韩视频| 德国女人一级毛片免费| 亚洲一本之道高清乱码| 成人免费黄色网址| 亚洲国产成a人v在线观看| 成年男女免费视频网站| 亚洲精品无码成人片久久不卡| 女人与禽交视频免费看| 亚洲AV成人一区二区三区观看| 免费v片在线观看无遮挡| 丁香六月婷婷精品免费观看| 亚洲色无码专区在线观看| 成在人线av无码免费高潮喷水| 亚洲国语精品自产拍在线观看| 久久免费看黄a级毛片| 一本色道久久88亚洲精品综合| 日本大片在线看黄a∨免费| 一级视频免费观看| 亚洲AV无码一区东京热久久| 久久国产精品成人片免费| 亚洲综合激情五月色一区| 免费中文字幕在线观看| 中文无码成人免费视频在线观看 | 1区2区3区产品乱码免费| 亚洲国产成人精品久久| 国产免费爽爽视频免费可以看| 二级毛片免费观看全程| 婷婷精品国产亚洲AV麻豆不片| 美女被免费喷白浆视频| 日本黄页网址在线看免费不卡| 亚洲a在线视频视频| 午夜影视在线免费观看| 中国国产高清免费av片| 亚洲日韩精品无码AV海量| 毛茸茸bbw亚洲人| 成人超污免费网站在线看| 国产成人无码精品久久久久免费|