iPhoneX取消了实体按键,改成了底部的小黑条。这个改动导致了网页上尴尬的屏幕适配问题。对于网页来说,浏览器已经处理好了顶部(刘海部分)的适配问题,所以我们只需要关注底部和小黑条之间的适配问题(即常见的吸底导航,返回顶部,等等。相对于固定定位元素的底部)。笔者通过查阅一些官方文档,结合实际项目中的一些处理经验,整理出一套简单的适配方案分享给大家,希望对大家有所帮助。以下是处理前后效果图:适配前需要了解的几个新知识安全区域安全区域指的是一个可见的窗口范围,安全区域中的内容不受圆角(corners)、齐刘海(sensorhousing),小黑条(HomeIndicator),如下图蓝色图Colorarea:也就是说,我们要想做好适配,就要保证页面可见,可操作区域在安全区。更详细的可以参考文档:HumanInterfaceGuidelines-iPhoneXviewport-fitiOS11newfeature,为了适配iPhoneX对苹果已有的viewportmeta标签的扩展,用于设置可见窗口中网页的布局,可以设置三个值:contain:可见窗口完全包含网页内容(左图)cover:网页内容完全覆盖可见窗口(右图)auto:默认值,与contain一致注意:不加扩展的网页默认表现是viewport-fit=contain,需要适配iPhoneX必须设置viewport-fit=cover,这是适配的关键步骤。具体可以参考文档:viewport-fit-descriptorconstant函数是iOS11的新特性,Webkit的一个CSS函数,用于设置安全区域到边界的距离。有四个预定义变量:safe-area-inset-left:安全区域到左边界的距离safe-area-inset-right:安全区域到右边界的距离safe-area-inset-bottomsafe-area-inset-bottom安全区域到上边界的距离:这里我们只需要注意变量safe-area-inset-bottom,因为它对应的是高度小黑条(横竖屏数值不同)。注意:常量函数在viewport-fit=contain时不起作用,必须与viewport-fit=cover一起使用。对于不支持常量的浏览器,浏览器会忽略它。官方文档中提到env函数即将取代constant函数,不过笔者测试过,暂时还没有。更详细的可以参考文档:HowtoadaptDesigningWebsitesforiPhoneX了解了以上知识点后,我们的适配思路就很清晰了。第一步:设置网页在可见窗口的布局添加viweport-fit属性,让页面内容完全覆盖整个窗口:
