所有分类
  • 所有分类
  • 后端开发
iPhone X的出现给H5页面带来技术革新

iPhone X的出现给H5页面带来技术革新

iPhone X已经发布了一段时间了。如果你用它来预览H5页面,效果与我们正常的设备预览不同,主要是因为iPhone X顶部的“刘海”设计和底部的“HOME键”被取消。也许这些差异会影响页面的整体效果,那么我们应该采取什么快速有效的方法来处理呢? 目前的H5页面可分为通栏页面...

iPhone X已经发布了一段时间了。如果你用它来预览H5页面,效果与我们正常的设备预览不同,主要是因为iPhone X顶部的“刘海”设计和底部的“HOME键”被取消。也许这些差异会影响页面的整体效果,那么我们应该采取什么快速有效的方法来处理呢?

目前的H5页面可分为通栏页面和非通栏页面,每个页面都可能有底部操作栏,具体如下:

通栏页面

顶部通栏

一些业务的一级页面大多使用顶部通栏banner的效果,因为iPhone X在状态栏中增加了24px的高度,这将阻挡当前通栏banner规范的内容区域。

解决方案:将44px的黑色适配层添加到页面顶部的通栏页面,将整个页面向下移动44px。

虽然这种做法不符合苹果要求的设计规范,但由于在短时间内更新所有banner的成本过高,可以先简单处理,然后优化bannner的设计展示。

底部Tab栏/操作栏

由于iPhone,一些页面使用底部的Tab栏/操作栏 X去掉底部的Home键,取而代之的是34px高度的Home Indicator ,Tab栏/操作栏目前的底部会造成一定的障碍。

解决方案:在页面底部增加一层高度为34px的适配层,将操作栏上移34px,颜色可自定义。

非通栏页面

底部Tab栏/操作栏

原因同上,Homee在底部有34px高度 Indicator ,对目前底部的Tab栏/操作栏会造成一定的阻碍。

解决方案:在页面底部添加一层高度为34px的色块,将操作栏上移34px,颜色可自定义。

关于安全区域

有些人可能会想,为什么非通栏下的页面内容是通向底部的,而按钮是在安全区域上方的?

这个问题涉及到安全区域,iOS11 与之前的版本不同的是,webview 更注重安全区域。这意味着,如果页面元素被设置为页面元素 top: 0, 它将渲染在屏幕顶部的44px下,即状态栏下。如果设置页面元素 bottom: 0, 它将渲染在屏幕底部的34px上,即底部的安全区域。

为了解决这一尴尬局面,苹果为我们提供了一个设置viewport的meta标签的解决方案。

viewport 可设置的选项是 viewport-fit,它有三个可选值:

  • contain: The viewport should fully contain the web content. 可视窗口完全包含网页内容

  • cover: The web content should fully cover the viewport. 网页内容完全覆盖可视窗口

  • auto: The default value, 同contain的作用

viewport通过在页面上设置-fit=cover,页面的布局区域可以延伸到页面的顶部和底部。

对栏目页面而言,设置了viewport-fit的属性,发现它不会生效,通过与同事查看手Q源码后发现,终端对WebView栏目设置了UIScrollViewContentInsetAdjustmentNever属性,去除了上下安全区域的边距,使安全区域的上下边距失效。

另外,经过两个版本的webview测试,发现wkwebview渲染页面时,底部按钮的位置性能不一致,可能是未解决的bug:

使用web方案:

可根据上述设计方案进行处理:

  1. 修改页面viewport-fit属性

  2. 在H5页面链接iphonex.iPhoneess 添加相应适配层的X访问页面

  3. 将适应的类名添加到H5页面上的相应dom结构

iphonex.css

@media only screen and (device-width: 375px) and (device-height: 812px) and 
(-webkit-device-pixel-ratio: 3) {
    /*增加头部适配层*//*
    .has-topbar {
        height: 100%;
        box-sizing: border-box;
        padding-top: 44px;
        &:before {
            content: '';
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 44px;
            background-color: #000000;
            z-index: 9998;
        }
    }

    /*增加底部适配层*//*
    .has-bottombar {
        height: 100%;
        box-sizing: border-box;
        padding-bottom: 34px;
        &:after {
            content: '';
            z-index: 9998;
            position: fixed;
            left: 0;
            bottom: 0;
            width: 100%;
            height: 34px;
            background: #f7f7f8;
        }
    }

    /*导航操作栏上移*/
    .bottom-menu-fixed {
        bottom: 34px;
    }
}
原文链接:https://www.icz.com/technicalinformation/web/html/2023/05/9526.html,转载请注明出处~~~
0
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?