微信小程序iPhone X适配

微信小程序适配问题 iPhoneX兼容在小程序页面开发中,涉及到需要适配iPhoneX的地方主要有导航栏(NavigationBar),标签栏(TabBar)以及页面底部的吸底按钮。对于positionfixed的可交互组件,如果渲染在iPhoneX的安全区域外,容易误触HomeIndicator,应当把可交互的部分都渲染到安全区域内。建议使用以下wxss进行兼容适配方案1、meta标签中设置网页在可视窗口的布局方式2、fixed完全吸底元素场景的适配另外一种方法,获得。...... 阅读详情

iPhone X适配

由于 iPhone X 屏幕顶部状态栏区域有刘海屏,以及在屏幕底部增加了操作条,在开发中需适配机型

最近开发微信小程序:在iPhone X, XS, XR, XS Max机型适配,我在项目中写了iPhone X适配的方法,在其它几个屏下也差不多(这里就没有详细适配)

ps: 抽时间记录下,以下是个人使用方案(仅供参考),欢迎大神们指教…

效果图

在这里插入图片描述

设计稿对比图

在这里插入图片描述

1. 通过getSystemInfo获取信息

通过 wx.getSystemInfo API获取相关数据。可以根据该方法返回的手机型号字段 model是否包含iPhone X 字符串来判断设备,也可以根据媒体查询来判断。

  • 下图展示真机调试、模拟器所获取数据。

在这里插入图片描述

步骤如下:

综合上面得到的相关信息,通过model值进行判断。

注意: 模拟器model值跟真机上是不一样的,这里通过search()来检索字符串

  • 在app.js文件中 创建全局变量,然后获取设备型号
  • 在需要的页面.jsonload中获取app.js定义的全局变量isIPhoneX值
  • 在wxml中判断为iPhoneX添加类名
  • 在wxss中添加需要的样式即可
app.js
App({
    // 小程序启动入口
    onLaunch: function (options) {
        // 获取设备信息
        this.getSystemInfo()
    },

    /**
    * 全局数据
    */
    globalData: {
        isIPhoneX: false, //当前设备是否为 iPhone X
    },

    /**
    * 获取设置信息
    */
    getSystemInfo: function() {
        let that = this;
        wx.getSystemInfo({
            success: function(res) {
                console.log('获取系统信息', res);
                let models = res.model;
                if (models.search('iPhone X') != -1) {
                    that.globalData.isIPhoneX = true
                }
            }
        });
    },
})
index.js
//在data中这样获取模拟器上有效果, 真机上不行(请大神指教)
data: {
    // isIphoneX: app.globalData.systemInfo.model == "iPhone X" ? true : false,
},

onLoad: function (options) {
    let that = this;
    //获取iphoneX..
    let isIPhoneX = app.globalData.isIPhoneX;
    if (isIPhoneX) {
        that.setData({
            isIPX: isIPhoneX
        })
    }
}
index.wxml
<view class="{{isIPX ? 'isIPXActives' : ''}}">tabbar</view>
/ 
<!-- 当元素上有类名时可以这样写 -->
<view class="tabbarBox {{isIPX ? 'isIPXActives' : ''}}">tabbar</view>
index.wxss
.isIPXActives {
    // 操作条
    padding-bottom: 68rpx;
}

2. 媒体查询方法

可以根据高度 和 Dpr判断

/* iPhone X, iPhone XS */
@media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {
    .testBox {
        font-size: 68rpx;
    }
}

/* iPhone XR */
@media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) {
    .testBox {
       font-size: 78rpx;
    }
}

/* iPhone XS Max */
@media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) {
    .testBox {
       font-size: 78rpx;
    }
}



/*  以下这种写法iPhone X XS XR XS Max统一设置样式(发现有些项目中这样写不起作用?) */
@media screen and (min-device-height: 812px) and (max-device-height: 896px) {
    .userInfoBox {
        height: 44%;
    }
    .infoListBox {
        height: 56%;
    }
}

3. 小结

感谢 https://blog.youkuaiyun.com/qq_33608748/article/details/82769570整理的知识

iOS适配所用到的切图及对应机型

在这里插入图片描述

4. 通过设置viewport-fit方法

说明: 这是iOS11 新增特性,苹果公司为了适配iPhoneX 对现有 viewport meta标签的一个扩展,用于设置网页在可视窗口的布局方式,可设置三个值:

  1. contain: 可视窗口完全包含网页内容(左图)
  2. cover:网页内容完全覆盖可视窗口(右图)
  3. auto:默认值,跟 contain 表现一致

注意: 网页默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhoneX 必须设置 viewport-fit=cover,这是适配的关键步骤。

env 函数

iOS11新增特性,Webkit 的一个 CSS 函数,用于设定安全区域与边界的距离,有四个预定义的变量:

  • safe-area-inset-left:安全区域距离左边边界距离
  • safe-area-inset-right:安全区域距离右边边界距离
  • safe-area-inset-top:安全区域距离顶部边界距离
  • safe-area-inset-bottom:安全区域距离底部边界距离

说明: 这里我们只需要关注 safe-area-inset-bottom这个变量,因为它对应的就是小黑条的高度(横竖屏时值不一样)。

<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> -->
<meta name="viewport" content="... viewport-fit=cover">
.btn {
	/* 底部 */
	padding-bottom: env(safe-area-inset-bottom);
	/* 顶部 */
	padding-top: env(safe-area-inset-top);
}

参考文章

【微信小程序】底部有安全距离,适配iphone X等机型的解决方案 微信小程序开发常常需要适配机型问题,如iPhoneX/XR等机型,底部有黑色横杠(称为安全距离),这时如果直接加css样式。能计算出安全距离,我想到一个通用的写法,具体做法是将页面高度。是不行的,不会计算底部安全距离,而会与之重叠。的高度限制为屏幕高度减去安全距离,代码实现是。经过搜索后,我们知道。... 阅读详情

相关推荐

微信小程序安全区域适配全攻略:从iPhone X到最新机型的避坑指南

本文全面解析微信小程序安全区域适配问题,从iPhone X到最新机型的避坑指南。详细介绍了使用微信官方API、CSS的env()与constant()函数以及第三方组件库的解决方案,帮助开发者确保小程序在所有设备上完美呈现。特别强调了安全区域适配的核心概念和常见场景的适配方案,提升用户体验。

CAT789的专栏 287

微信小程序适配iphoneX,XR,12及以上,获取底部安全区域

iphone x及以上的异形屏top高度为44px(或以上),非异形屏为20px。先判断是否为异形屏,如果是,获取到底部小黑条区域的高度。在页面设置底边距padding-bottom/margin-bottom,把内容区域隔开。小黑条区域高度=屏幕高度-安全区域的bottom值,安全区域指的是内容可见区域注意小黑条区域的高度单位是。

donghua201的博客 2835

微信小程序适配iphoneX的实现方法

主要介绍了微信小程序适配iphoneX的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

如何在h5和小程序中适配iphoneX及更高版本全面屏底部的安全区

在项目开发的过程中,需要IOS全面屏底部安全区适配。

m0_73117087的博客 2717

LaMAR数据集下载和使用流程

LaMAR数据集

qq_51745206的博客 971

零基础学会制作 基于STM32/51单片机的智能血压表设计/血压表/血压计

本系统是以单片机为主控,传感器模快、显示模块、人机交互、无线传输等组成的智能血压表设计。传感器用于测量血压和脉搏,主控电路板用于处理数据和控制设备,显示屏则用于显示测量结果。通过软件设计,完成测量数据的处理,其中血压和脉搏的测量、数据的分析和处理等。

weixin_55654459的博客 2473

微信小程序之手机底部条形导航重叠问题

前言:如上图所示,有的手机底部自带导航特殊导致按钮去导航重叠 解决方法:isIpx ==true 重定义高度即可,视情况而定 /** * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) */ onLaunch: function () { var that = this; // 获取页面的有关信息 wx.getSystemInfo({ success: function (res) { // 根据 屏幕高度 ...

weixin_44936767的博客 1790

别再傻傻分不清!一文讲透电子产品‘冲击’与‘碰撞’试验的区别与选用(附GB/T 2423标准解读)

本文详细解析了电子产品可靠性测试中冲击与碰撞试验的核心区别与应用场景,结合GB/T 2423标准提供实用指南。冲击测试模拟瞬时高强度事件(如跌落),而碰撞测试针对重复性力学环境(如运输颠簸)。通过参数对比和标准解读,帮助研发人员精准选择测试方案,提升产品可靠性验证效率。

weixin_42665255的博客 265

小程序iPhonex适配

"btn-iPhone":" "}}">我是底部按钮//这里64px 是因为底部按钮40px + 加上需要适应的34px;5 that.globalData.isIphoneX = true //不等于-1 就是----6 padding-bottom:34px;-- 小程序 在app 里面写 是否判断他是IPhone X-->-- 如果底部有按钮这添加判断 增加34px-->3 --给整个页面添加34px-->

xxpr_ybgg的博客 515

Proteus 8.15仿真STM32F103C8,ADC采样总为0?别急着换芯片,先检查这3个配置

本文详细解析了在Proteus 8.15中仿真STM32F103C8时ADC采样值为0的常见原因及解决方法。从供电网络配置、时钟设置到ADC参数调整,提供了系统性的排查指南,帮助开发者快速定位问题,避免不必要的硬件更换。重点关注供电网络、时钟分频和ADC配置等关键环节。

weixin_30425949的博客 366

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 998

微信小程序适配 iPhone X 总结

原文链接 本文主要介绍我们的知识小集小程序在适配 iPhone X 屏幕时遇到的一些问题以及总结,希望对你的小程序开发能有所帮助。 iPhone X 屏幕数据 在去年 9 月份 iPhone X 正式发布后,引发了一波 iOS App 适配 iPhone X 的热潮和技术文章,详情可以参考掘金技术社区的这个专题:《iPhone X 适配实践》 我们这里先简单总结一下 iPhone X 屏幕的基础数...

zsxjtip的博客 488

问答式AI vs 智能体(Agent):它们有什么不同?

你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

Johnny2004的专栏 445

微信小程序吸底区域适配iPhone X

微信小程序适配iPhone X主要针对fix定位到底部的区域,比如详情页或购物车底部的按钮栏,会与iPhone X的Home Indicator横条重叠,这样在点击下方按钮时很容易误触发手势操作,如下图: mpvue中适配方法: 1.获取设备信息 /** * 获取设备信息 * @returns {Promise&amp;lt;any&amp;gt;} */ export function wechatGe...

博客 9441

App爬虫实战篇-以华为真机手机爬取集换社的app为例

在开始学习这篇文章之前,建议你先按照之前2篇文章(和),配置必要的环境,才可以继续完成本章节内容。

youbingchen的博客 780

【VTK】VTK中的光标样式

本文分享VTK中的光标设置相关内容技术,希望对各位小伙伴有所帮助!

qq_40041064的博客 1928

微信小程序iphone x适配

微信小程序在适配iphone x 的时候 底部的横线会出现遮挡这时候就要处理下:在app.js文件中 创建全局变量,然后获取设备型号 globalData: { isIphoneX: false, userInfo: null }, onShow:function(){ let that = this; wx.getSystemInfo({ ...

wy_Blog的博客 9540

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

微信小程序适配iPhone X

1、获取设备型号 App({ // 全局数据 globalData: { // 其他数据定义 ... isIPX: false, // 当前设备是否为 iPhone X }, // 小程序启动入口 onLaunch: function (options) { // 其他启动代码... // 判断设备是否为 iP...

weixin_30500289的博客 127

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

微信小程序在 iPhone X 上的适配问题

【解决】: 首先,我们需要判断用户手机型号是否是 iPhone X ? 这个简单,可以调用小程序系统 API 中的接口 wx.getSystemInfo( ) ,示例代码如下: // app.js globalData: { isIphoneX: false //全局变量,默认为 false }, onShow: function() { let that = this; ...

zlq_优快云的博客 917

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微信小程序中的iPhone X适配问题

微信小程序中的iPhone X适配问题 小程序中下方的导航会被iPhone X下面的那条黑线盖住【微笑脸】,所以要专门为了iPhone X做样式上的适配【微笑脸】 wx.getSystemInfo({ success: function (res) { //console.log(res.model) ...

weixin_30505225的博客 334

微信小程序iPhone X底部适配问题

首先在app.js里配置一个全局变量 globalData:{      isIphonex:false } 然后在onShow里面,根据微信小程序API:wx.getSystemInfo获取用户手机型号 let _self = this; wx.getSystemInfo({       success: res =&gt;{       let modelmes = res.m...

weixin_42679187的博客 6484

微信小程序中的iPhone X适配解决

原因: 微信小程序在适配iphone x 的时候 底部的横线会出现遮挡如图: 解决方案: 步骤一:在app.js文件中 创建全局变量,然后获取设备型号   globalData: {     isIphoneX: false,     userInfo: null   },   onShow:function(){     let  that = this;     wx.getSyst...

前进者 2万+

微信小程序怎么适配iphone x的解析

昨天项目遇到背景图当iphone x中变形了。所以百度了一波查到很多方法。特记录下来,希望大家能够用到吧 我们用到小程序的api wx.getSystemInfo(OBJECT) 先了解下 发现返回的参数model是手机型号的参数,那么我们就开始写代码啦 1、首先在data中点好变量 data: { n isIphoneX: false, }, 2、首先在onload中...

lily2016n的博客 1843
上一篇: 微信小程序模板消息
下一篇: 微信小程序授权用户信息
Smile_ping
博客等级 码龄11年 3758粉丝 216原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值