vue react 移动端适配 viewpoint @media iphonex刘海屏适配

对于需要在移动端展示的页面来说,由于移动设备各种各样,展现效果也就有了很大的不同,所以做移动端适配是个费劲但是又不得不做的事情。那么我们来说一下如何去应对这种情况。

对于移动端适配,要从2个角度去考虑:
第一个就是需要根据分辨率不同自适应页面大小
第二个是对于刘海屏的特殊处理
所以我们需要使用2套方案来完成移动端的适配

1、分辨率自适应方案

网上有大量的文章来讲分辨率自适应方案,比如rem计算font-size字体大小来作为单位进行像素的换算,比如使用css3新的语法 vw vh 等等百分比单位来计算,等等。相信如果一个新手来看这一堆东西,估计会蒙半天,特别是rem的计算方式,太过繁杂。
根据我花费了大量时间之后总结出来的经验,我最终确定了一个方案来实现。我觉得这个是目前还算简便的方式,所以记录在这里。那就是 ----- 利用scss函数方式 结合 vw vh 百分比显示

通常我们会拿到一个UI设计稿,UI设计稿上会有设计时屏幕的宽高(如果没有UI稿就自己确定一个长宽就可以了)
理解起来非常简单:就2步

  1. 创建公共scss文件,这样就可以是用scss提供的函数方法,声明计算宽、高的函数,设置屏幕长宽UI标准
@function pxToVw($px, $screen-width: 1334) {
  @return ($px / $screen-width) * 100vw;
}

@function pxToVh($px, $screen-height: 750) {
  @return ($px / $screen-height) * 100vh;
}
  1. 使用时引入公共scss文件,调用方法传入UI稿元素的长或宽,即可计算出百分比
.countdown {
  right: pxToVw(40);
  top: pxToVh(40);
}

如此设置,不管在小屏,大屏,手机,平板,pc, 都会按比例缩放显示元素了

2、刘海屏适配方案

关于刘海屏,等异形屏,我的首要建议就是对于能够从UI设计上就能预留出刘海高度的,最好能直接预留出高度设计。这样就不需要做异形屏幕的适配。
正常来说,我们的页面会分为以下两种情况

  • 有状态栏的界面:刘海不会遮挡主要内容区域,无需适配
  • 无状态栏的全屏界面:刘海可能会遮挡主要内容,需要适配
  1. 首先,对于屏幕的区分适配,我们需要使用viewport来实现,所以首先在index.html引入mate,开启viewport
// 在index.html中
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no" />

对于其中参数不明白的,可以参考其他教程中的解释,在此我就不再赘述了,比如在文章底部列出的参考文章。

  1. 对于各种屏幕的特殊处理,我们采用@media 方案来实现
    对于是否有刘海屏,我们可以利用constant函数来判断是否有安全区域(刘海屏)
// 在scss文件中
@supports(bottom:constant(safe-area-inset-bottom)) { // 如果存在底部安全区域
    .button {
        padding-bottom:constant(safe-area-inset-bottom); 
        // padding-bottom:calc(30px(假设值) + constant(safe-area-inset-bottom)); 
    }
}
@supports(bottom:env(safe-area-inset-bottom)) { // 如果存在底部安全区域
    .button {
       padding-bottom:env(safe-area-inset-bottom); 
       // padding-bottom:calc(30px(假设值) + constant(safe-area-inset-bottom)); 
    }
}
  1. 对于其他屏幕类型的处理
    介绍下对于@media的使用,简单示例如下,可根据@media的详细参数做各种配置
// 在scss文件中
@media only screen
and (min-device-height : 768px) // 最小设备显示高度768 -意思是当设备高度大于768时生效
and (max-device-height : 1024px) // 最大设备显示高度1024 -意思是当设备高度小于1024时生效
and (orientation : landscape) { // 横屏时生效
  .titleStyle {
    font-size: 20px;
  }
}

这样就实现了屏幕的适配

结语:屏幕适配的各种兼容情况层出不穷,我这套方案应该也会有不兼容的情况出现,所以如果有更好的解决方案欢迎大家留言。对于一些 constant env calc safe-area-inset-bottom 等等这些语法不熟悉的话,大家可以去搜索下,一搜就有。希望这套方案足够简洁明了,能够帮助到一些想快速实现的朋友。

感谢其他作者宝贵的经验和参考:
https://www.cnblogs.com/gaogch/p/10628613.html - 有关viewport的介绍
https://www.runoob.com/cssref/css3-pr-mediaquery.html - 菜鸟课堂 有关@media的各种参数的整理介绍
https://segmentfault.com/a/1190000012309030 - 对于@supports方法的展示
https://www.cnblogs.com/august-8/p/4537685.html - 对于@media的应用
https://blog.csdn.net/soband_xiang/article/details/87909092 - 对于@media的应用
...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354