px 和 em 与 rem 的区别

rem (font size of the root element) 是指相对于根元素的字体大小的单位,简单的说它就是一个相对单位,rem的html.style.fontSize一般是16px

px 是像素(Pixel)的缩写,是图形的基本单位,相对于显示器屏幕分辨率而言的,设计稿的单位是px,一般是750px

em是相对长度单位,相对于当前对象内文本的字体尺寸

任意浏览器的默认字体高都是16px,所有未经调整的浏览器都符合: 1em=16px。那么 12px=0.75em,10px=0.625em,为了简化font-size的换算,需要在css中的body选择器中 声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em

px转换rem公式:

var html = document.documentElement;

html.style.fontSize = (html.clientWidth/750)*100+”px”;

或者

<script>
    // 设置rem
        let fontSize = 0;
        (function (doc, win) {
            //获取html节点和事件 和屏幕变化改变字体大小
            const docEl = doc.documentElement,
                resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
                recalc = function () {
                    const clientWidth = docEl.clientWidth;
                    if (!clientWidth) return; //排除宽度没值
                    if (clientWidth >= 750) {
                        docEl.style.fontSize = '100px';
                    } else {
                        docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
                    }
                };

            function fontSizeFun() {
                let size = 0;
                let clientWidth = docEl.clientWidth;
                if (!clientWidth) return; //排除宽度没值
                if (clientWidth >= 750) {
                    size = 100;
                } else {
                    size = 100 * (clientWidth / 750);
                }
                return size;
            }
            if (!doc.addEventListener) return;
            win.addEventListener(resizeEvt, recalc, false);
            doc.addEventListener("DOMContentLoaded", recalc, false);
            fontSize = fontSizeFun();
            win.addEventListener(resizeEvt, function () {
                fontSize = fontSizeFun();
            }, false);
            doc.addEventListener("DOMContentLoaded", function () {
                fontSize = fontSizeFun();
            }, false);
        })(document, window);
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值