是时候在项目中使用这个CSS属性了

Vue中文社区 2021-10-26

以下文章来源于前端宇宙 ,作者刘小夕

八月份做移动端项目的时候,同事让我帮忙看个底部安全距离的问题,我立即摩拳擦掌,原因无他,仅仅是因为当天上午我在medium闲逛时,正好看到了这篇文章:You have to start using this CSS property in your websites(https://bootcamp.uxdesign.cc/you-have-to-start-using-this-css-property-in-your-websites-7353f46def79) 我是被标题骗进去的。

看完之后的感觉是,短小精悍,并且似乎很有用的样子。没想到当天就可以派上用场,我可真是太激动了。

原文如下

响应式网站每天都在变得更好。但由于某些原因,很多web开发者一直忽略了移动设备上的安全区域。比如凹槽周围的区域,以及像iPhone(x及以上)这样的设备上的 Home Bar 周围的区域。

问题说明

你有没有试过将一个元素定位到屏幕底部?

您很快遇到的问题是可见视口与交互式视口不同。移动浏览器倾向于始终优先考虑基本的 UI 元素(如 IOS 上的主页栏)的互动性。

浏览器通过实现称为“安全区域”的东西来做到这一点。这些区域不能做用户交互(当然啦,UI上展示也会异常)。

幸运的是,移动浏览器将这些安全区域存储在环境变量中,供我们使用!您的内容应该与安全区域一起工作,而不是放在它后面不可接触。

简单的CSS解决方案

env(safe-area-inset-bottom) // or -top 

通过使用浏览器提供的环境安全区变量,你可以轻松地绕过移动浏览器的安全区域。

.cookieNotice {  position: fixed;  right: 0px;  left: 0px;  bottom: 0px;  padding-bottom calc( env(safe-area-inset-bottom) + 20px )}

上面的代码例子将动态地在cookie弹出窗口的底部添加padding,使其在任何情况下都能在所有设备上使用。

嗨,你,我希望你能学到一些东西:)

如果你已经知道这些(并实施这些)......很好!如果没有,那就开始做吧!;)

如果没有,就开始做吧!;)

祝你有一个愉快的一天。

我遇到的问题

以上就是原文啦,接着开始的问题说,因为说了是安全距离的问题嘛,页面在移动端的浏览器中,底部的导航栏和ios的小黑线重叠在一起了。

第一步,我当然是审查元素啊,结果一看,样式里面已经有了:

padding-bottom: env(safe-area-inset-bottom);

当时我的感觉就是,啊这。。。

这是为什么?

当然是请教搜索引擎,google了下,发现安全距离需要搭配 viewport meta 使用,需要设置 viewport-fit=cover

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"/>

我麻溜的审查代码看了下,发现这个 meta 也有。我懵圈了。

但是坚决不能认输,我继续可劲的Google,但是很遗憾,再也没有找到什么有用的信息。

然后我灵机一动,审查了下联调地址的代码,发现联调地址的代码中没有对应的 meta viewport 代码,一路追踪,发现是构建平台中模板服务配置的有问题,虽然本地的html模板是正确的,但是构建平台模板服务里面没有 viewport-fit=cover,所以最终的构建结果肯定有问题啊。

修改了下模板服务,重新构建了下,完美解决。一个小小的问题,我的心里却历经了曲折,以至于时隔一个多月,依旧印象深刻。

如果有帮助的话,分享和点赞吖~

(0)

相关推荐

  • 了解CSS in JS(JSS)以及在React项目中配置并使用JSS

    目录 认识JSS 好处 坏处 什么是JSS JSS 的常见实现 JSS 的好处与坏处 使用模块化CSS实现JSS 安装插件 在React项目中的tsconfig.json中添加配置 vscode项目中 ...

  • animate.css在vue项目中的使用教程

    在vue项目中使用动画其实有多种方式,可以使用vue中的过渡transition,可以使用animate动画与transition配合使用,也可以单独使用animate动画库,下面我们开始介绍在vue ...

  • Springboot动态生成一个项目中没有的类(class对象)

    这两天新接到一个需求,是这样.从页面上文本写一个拦截器,然后上传这个拦截器的源码,生成对象并调用对象的方法. 我当时的反应就是很懵逼的 ...这个操作也太骚了吧 年前写了个用groovy来执行,但是会 ...

  • 弱电项目中,核心交换机主要参数如何计算?如何选择?值得收藏学习!

    核心交换机应当全部采用模块化结构,必须拥有相当数量的插槽,具有强大的网络扩展能力,可以根据现实或者未来的需要选择不同数量.不同速率和不同接口类型的模块,以适应千变万化的网络需求. 影响核心交换机的因素 ...

  • 设计的力量:旅游项目中的空间设计方略

    世上一切美好的事物皆可构成旅游体验的内容,那些最美好的东西往往最初并不是着眼于旅游的目的. 绝美的自然-九寨沟.虔诚的信仰-哥特教堂.疯狂的意念-少女峰登山火车.恬静的生活-小镇街道 但当旅游成为一个 ...

  • 房建项目中铁✘局某项目建筑“劳务大清包”...

    房建项目中铁✘局某项目建筑"劳务大清包"含部分辅材报价单:建筑面积计算: 1. 钢筋工每平米45元 2. 模板<木工含材料>每平米140元 3. 混凝土每平米20元 4 ...

  • 市政项目中“交通疏散工程”中标价格一览表...

    市政项目中"交通疏散工程"中标价格一览表,中"字"头央企最新中标项目:数据真实:仅供参考:如有需要:建议转发: 第一:标线项目 1.导向箭头<长度6米&g ...

  • 在新项目中如何新增设备、工装、模具?

    在新项目中如何新增设备.工装.模具? 在APQP的概念设计阶段,根据制造可行性分析的结果,提出新增设备工装的需求,在APQP产品开发与验证阶段,根据样件制造的经验和产品特性及公差的要求,制定新增设备工 ...

  • 项目中常用的19条mysql优化

    Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言.如今Java已经广泛应用于各个领域的编程开发. 一.EXPLAIN 做MySQL优化,我 ...