iPhone X Web前端页面适配(处理可爱的刘海)

本文介绍了如何处理iPhone X的刘海屏对Web前端页面的影响,包括理解安全区域、使用viewport-fit属性以及CSS3的env和var变量。通过示例代码和测试图,展示了适配过程,确保内容在不同iPhone型号上正常显示。
摘要由CSDN通过智能技术生成

一、两个概念

iPhone X和IOS 11的发布,不在许多技术方面造成了一定的冲击,前端也不可以避免地也受到影响,因为iPhone X刘海的影响,在编写前端页面的时候要做一些处理,下面先提出一些新的概念。
  1. 安全区域

    因为刘海的关系,所有的展示都会放在一个叫做safe-area的区域,如下图(1-1),主要是为了防止显示的内容被刘海传感器(house sensor),圆角边框(rounded corners)所遮挡,这样对用户来说是不友好的,但是如果全部内容被放置在默认的安全区域,显示的内容就会被压缩,这个时候需要做一些处理,既然页面能够正常显示,又能够不被安全区域遮挡。

  2. CSS3新特性viewport-fit

    在w3c.org官方给出的关于圆形展示(Round display)的标准中, 提到了viewport-fit这一属性,这个属性表明了对于某些屏幕并不是矩形形状的设备的时候浏览器该如果进行显示。传送门:viewport-fit官方参考文档

  3. CSS3新特性env以及var预定义变量。

    在定义以后viewport-fix以后, 浏览器会自动生成四个padding变量,即用来将页面向内挤压到可以正常显示的位置。这个时候需要用到env或者constant来将变量转换成CSS属性值并且赋值给属性。ps:env好像还在开发中,好像只支持IOS 11.2及以上。目前比较稳妥的方法就是constant和env一起使用。传送门:var预定义变量官方参考文档

安全区域Safe_Area说明图

图1-1 安全区域(Safe Area)

二、环境要求

软件环境要求: 能跑xcode 9.1的机器一台(我用的Mac mini,主要是用来开启iPhone X模拟器,穷~~~)
            一个IDE(sublime或者vscode随意)
            一个本地调试服务器(用npm安装一个http-server就行) 
            当然还有最重要的,就是你~~~~

三、开始动手

  1. 在meta中添加viewport-fit=cover(告诉浏览器要讲整个页面渲染到浏览器中,不管设备是圆角与否,这个时候会造成页面的元素被圆角遮挡),如下图3-1。

边缘元素被遮挡

图3-1 边缘元素被遮挡

  
2. 为了处理这些显示的问题,我们需要使用到env,constant还有预定义变量safe-area-inset-top,safe-area-inset-right, safe-area-inset-bottom, safe-area-inset-left。全部使用的这些方法或者变量都是在Safari中全部定义好的,我们就正常使用就行。但是别忘记了还要做一个向下兼容。

下面附上完整的代码以及一些测试图。

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
    <title>iphone X 屏幕以及其他iphone屏幕适配</title>
    <style>
    /* 一、样式基本初始化 */
    * {
        margin: 0;
        padding: 0;
    }

    
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值