移动端网站根据设计稿动态设置rem

一、例如设计的UI图尺寸是1366宽的,则正常页面往下滚动的是情况下,输入UI图设计的尺寸,可以是1366,也可以是1920 等;于是就用rem单位适配,根据根节点换算

// 初始化
let self = this;
window.onload = function() {
    /*1366代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是
为了以后好算,比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem等等*/
    self.getRem(1366, 100);
};
self.getRem(1366, 100);
window.onresize = function() {
    self.getRem(1366, 100);
};


// 设计rem节点大小,等比例换算
function getRem(pwidth, prem) {
            let html = document.documentElement;
            let oWidth = window.outerWidth ? window.outerWidth : screen.width;
            html.style.fontSize = (oWidth / pwidth) * prem + "px";
        }

二、使用

<style lang="scss">
.show {
    display: flex;
    .list {
        flex: 1;
        // UI图宽200px 设置为2rem
        height: 2rem;
        background: #ccc;
        span {
            // 1366 宽情况下的20px 字体,设置为0.2rem
            font-size: 0.2rem;
        }
    }
}
</style>

三、借鉴

原文链接:https://blog.csdn.net/u012036171/java/article/details/99722725

四、自己开发项目

UI设计图:750px

每个页面加入js

// 初始化
let self = this;
window.onload = function() {
    /*1366代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是
为了以后好算,比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem等等*/
    self.getRem(750, 10);
};
self.getRem(750, 10);
window.onresize = function() {
    self.getRem(750, 10);
};


// 设计rem节点大小,等比例换算
function getRem(pwidth, prem) {
    let html = document.documentElement;
    let oWidth = window.outerWidth ? window.outerWidth : screen.width;
    html.style.fontSize = (oWidth / pwidth) * prem + "px";
}
.logo-int-big {
    font-size: 2.2rem;
}

原设计图为:22px

因为设置的等比为10,所以用原设计图除以10即可

五、首先设置html基准值

html{
    font-size: 62.5%;
}

六、手机端长宽单位使用rem不适配QQ浏览器、UC浏览器、OPPO自带浏览器,解决办法,宽度单位:vw,高度单位:vh

原文地址:https://www.cnblogs.com/wangyuxue/p/13344001.html