首页 > 想用rem给width与height进行赋值时,该怎么计算呢?以谁为参照物呢?

想用rem给width与height进行赋值时,该怎么计算呢?以谁为参照物呢?

rem在设置宽度和高度的时候,该怎么进行计算呢?
比如html{font-size: 62.5%;}
那么font-size:2rem;与font-size:20px是一样的
但是width:20rem与width:200px是不一样的。
所以,当想用rem进行width与height进行设置时,该怎么计算呢?以谁为参照物呢?


rem这个单位是相对于根元素的,是可以用来设置widthheight的,只是计算的基准是html标签的font-size值,这里建议htmlfont-size值用px,不要用百分比; 不过呢htmlfont-size最好是通过js来动态计算一个数值:

//- 设置根元素fontSize~
(function (doc, win) {
    var _root = doc.documentElement,
        resizeEvent = 'orientationchange' in window ? 'orientationchange' : 'resize',
        resizeCallback = function () {
            var clientWidth = _root.clientWidth,
                fontSize = 20;
            if (!clientWidth) return;
            if(clientWidth < 640) {
                fontSize = 20 * (clientWidth / 320);
            } else {
                fontSize = 20 * (640 / 320);
            }
            _root.style.fontSize = fontSize + 'px';
        };
    if (!doc.addEventListener) return;
    win.addEventListener(resizeEvent, resizeCallback, false);
    doc.addEventListener('DOMContentLoaded', resizeCallback, false);
})(document, window);

呵呵,rem只是用来设置字体大小,没有谁告诉你rem可以设置width和height


其中的rem原理我就不说了,我想说的就是,rem,真的不能用在height和width中, 在height和width中,一般情况下使用百分比就可以了.
在width里面使用rem的话,你会发现, 他计算出来的数值,和你想要的不一样.
举个例子吧:
当你在html里面设置的font-size为10px的话,

html{
    font-size:10px;
}
div{
    font-size:2rem;  //得到的结果是20px 你会微微一笑,艹,你骗我呢. 不急,show u code
}
div{
    height: 2rem;  //这时候,请打开你的控制台,观察div的高度,你会发现是24px;TM!!!怎么不是20px呢
}

原理就是, font-size 对于height 和 width 而言最小值是 12px, 而对于font-size而言, 你想设多少,就设置多少。 这个无可厚非。
咳咳~~
所以综上所述: 在height 里面一般使用 百分比就够了(你整个12px 你自己也不好计算呀,而且如果动态的时候真的给你整个 <12px的,到时候哭都来不及).
在font-size里面,最好就使用rem, 因为这个单位是专门为他开发的.


rem用来设置字体大小,也可以用于网格布局。rem中的r代表根元素,它的值就是根元素设置的字体大小。在大多数情况下,根元素就是html了。这个单位可以解决em设置字体时,由于继承带来的问题,具体如下:

body {
    font-size: 14px;
}
div {
    font-size: 1.2em; // calculated at 14px * 1.2, or 16.8px
}

假设html存在这样的结构:

<body>
    <div>
        Test <!-- 14 * 1.2 = 16.8px -->
        <div>
            Test <!-- 16.8 * 1.2 = 20.16px -->
            <div>
                Test <!-- 20.16 * 1.2 = 24.192px -->
            </div>
        </div>
    </div>
</body>

但是用rem能避免

html {
    font-size: 14px;
}
div {
    font-size: 1.2rem;
}

这样在上面的那三个嵌套的div的字体大小都是 1.2*14px = 16.8px 了。
在布局中,如下:

.container {
    width: 70rem; // 70 * 14px = 980px
}

参考文章

【热门文章】
【热门文章】