最优适配布局

背景:由于老生常谈的兼容问题,不建议使用 viewport 缩放。

移动端的响应式布局需要通过设置 media queries 配置多个断点,在响应断点切换的瞬间带来断层式的切换变化,用户体验不佳。

而采用 rem 单位的弹性布局,又需要脚本依赖(头部内嵌:监听分辨率变换,根元素字体随之变换的脚本),耦合不佳。

 

解决方法:利用 视口单位vw + rem 实现适配(已主流)。

了解:1vw 等于视口宽度的 1%,移动端,PC 端都是视口宽度 100vw,高度 100vh。

 

总结与示例:变化的根元素搭配 rem,摘自 张鑫旭  基于vw等viewport视区单位配合rem响应式排版和布局

html {
    font-size: 16px;
}

@media screen and (min-width: 375px) {
    html {
        /* iPhone6的375px尺寸作为16px基准,414px正好18px大小, 600 20px */
        font-size: calc(100% + 2 * (100vw - 375px) / 39);
        font-size: calc(16px + 2 * (100vw - 375px) / 39);
    }
}
@media screen and (min-width: 414px) {
    html {
        /* 414px-1000px每100像素宽字体增加1px(18px-22px) */
        font-size: calc(112.5% + 4 * (100vw - 414px) / 586);
        font-size: calc(18px + 4 * (100vw - 414px) / 586);
    }
}
@media screen and (min-width: 600px) {
    html {
        /* 600px-1000px每100像素宽字体增加1px(20px-24px) */
        font-size: calc(125% + 4 * (100vw - 600px) / 400);
        font-size: calc(20px + 4 * (100vw - 600px) / 400);
    }
}
@media screen and (min-width: 1000px) {
    html {
        /* 1000px往后是每100像素0.5px增加 */
        font-size: calc(137.5% + 6 * (100vw - 1000px) / 1000);
        font-size: calc(22px + 6 * (100vw - 1000px) / 1000);
    }
}

 

引申1:满汉全席版,摘自大漠  如何在Vue项目中使用vw实现移动端适配-20180125 

引申2:题外,摘自 xueui 网  详细讲解像素,分辨率和适配

引申3:淘宝适配  淘宝适配

假若需要兼容旧版系统,再配合 脚本补丁 食用,不过这是大厂的日常了。

posted @ 2018-03-21 14:26  blackatall  阅读(149)  评论(0编辑  收藏  举报