为了账号安全,请及时绑定邮箱和手机立即绑定

关于px,em,rem的那点事

标签:
Html/CSS CSS3

px
之前做pc端切图的时候一直在使用px作为单位,那么px是什么呢,px即pixel,相对长度单位,是相对于显示器屏幕分辨率而言的。
em
其实我并没有用过这个em,只做过demo测试(=。=)em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。浏览器的默认字体尺寸大家都知道是16px,那么要用em作为单位来设置一个p标签的字体大小为 32px 时,就是p {font-size: 2em;},好接下来在这个p标签中有一个a标签,你要给这个a标签也设置32px大小的字体,那么代码为p a {font-size: 1em}才对,因为em值不是固定不变的,会继承父元素的字体大小。所以用起来会感觉怪怪的。
rem
后来做移动端接触到了rem,rem(root element),这个单位长的跟em挺像的,em是相对于父元素而言,而rem是相对于页面根元素而言的,所以只需要给html设定一个值。小伙伴曾经给过我一个方法供大家参考。

function rem() {
    var w = Math.min(document.documentElement.getBoundingClientRect().width, 500);
    document.getElementsByTagName('html')[0].style.fontSize = w * 100 / 320 + 'px';
}
rem();
window.onresize = function() {
    rem();
};

现在看这段js,如果你的手机是5s,那么 w 这个值就是320,那么给html设定的font-size就是 100px,现在相当于 100px 是 1rem,如果你页面中的p元素的font size是 12px,那么你写成 rem 怎么写,就是 12 / 100,即 0.12rem,当然div的宽和高也能这样表示了,比如一个div的宽和高都是100px,那么用rem表示就是 div {width: 1rem; height: 1rem;}
如果你的手机是6s ,那么 w 这个值就是375,那么给html设置的font-size就是 117.1875px,现在相当于 117.1875px 是1rem,那么你刚才给p设定的 0.12rem 就要乘上 117.1875px 肯定是个比 12px 大的数了。这样就能保证在5s中12px 在6s中比在5s中看着字体要大,这样才符合常规对吧。
至于为什么js中要用w*100 / 320呢 这个320 是因为我们美工给我的图都是按照5s的标准来做的,就是320px,当然图都是640px的,所以我就除以的320,如果美工给你的图是375*2的 那么你就需要把320换成375,因为这样你在图里量出的div的宽度才能符合。
大概就是这些东西了,前端小白,能力有限,如有错误,望见谅。

点击查看更多内容
24人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
2
获赞与收藏
114

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消