使用em和rem替代px
rem是指根元素的字体大小,默认情况下html的字体大小为:16px=1rem。而em是相对单位,是基于它的祖先元素计算的。
如果我们不指定html和body的字体大小,要得到12px的rem需要这样计算:12/16=0.75rem
下面这张图em和px的转换关系是基于父元素是16px的情况下,所以rem也是这样的结果。

但是。这样换算总归有点麻烦,我们总不能写px的时候时刻被一张转换表或者计算器。
我们可以修改根元素html的字体:16*62.5%=10.4px ,约10px 现在,px与rem的关系是这样的:10px=1rem。
这样,我们要得到12px就简单多了:12px=1.2rem
通常,我们会给页面一个默认的12px字体,这样写:
html{font-size:62.5%}
body{font-size:1.2rem}
这一种写法的问题是,因为chrome的最小字体是12px,当我们设置html的font-size为62.5%时,计算出来的字体是10px,但是实际是12px,因此在应用过程中发现,我们使用rem的结果会比估计的篇大一点。
可以采用唯品会的这种写法:
html{font-size:312.5%;}
body{font-size:0.24rem}
NOTICE
在PC上调试时,需要使用Chrome浏览器,因为在使用360急速模式下,可能会发生下面的bug:
看下面的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<style>
html{font-size: 62.5%}
body{font-size:1.2rem;}
</style>
<title>em rem</title>
</head>
<body>
<p>我不是12像素</p>
</body>
</html>
预览结果:

查看控制台computed样式:

16*1.2=19.2 ,可见,body中rem还是基于16px计算的,而不是10px。
但是对于其他元素而言,rem又是10px了,看第二个例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<style>
html{font-size: 62.5%}
body{font-size:1.2rem;}
</style>
<title>em rem</title>
</head>
<body>
<p>我不是12像素</p>
<p style="font-size:1.2rem">我真的是12像素</p>
</body>
</html>
结果如下:


使用em和rem替代px的更多相关文章
- EM vs REM vs PX,为什么你不应该”只用px“”
Actually this artical is from other person's opnion ,i just put it into chinese,and this means a ver ...
- 简谈CSS 中的 em,rem,px,%
在实际工作中,可能我们用的比较多的是‘%’ 和 px,但是我们也经常看到很多网站和css框架里用的是em 或rem.而‘%’ 和px已经都是比较常见或者说是常用.但是em 和rem 却鲜有使用,一直以 ...
- CSS中em、rem和px的区别
任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px,1rem=16px. EM特点 1. em的值并不是固定的: 2. em会继承父级元素的字体大小. rem特点 r ...
- css3单位em,rem,px,vw,vh等
昨天发现了个好用的方法去设置手机端的rem单位,在这里记录下. html{ font-size:calc(100vw/7.5);} 这是按照750的设计稿(也就是iphone6的设计稿). 100vw ...
- 关于EM,REM,PX的几点注意
px是绝对单位,不支持IE的缩放,em是相对单位. em指字体高,任意浏览器的默认字体高都是16px.所以未经调整的浏览器都符合: 1em=16px.那么12px=0.75em, 10px=0.625 ...
- 详细讲解css单位px,em和rem的含义以及它们之间的区别
一.首先介绍一下px px就是css中最基本的长度单位了,用px做单位基本上没什么问题,可以做到让页面按套路精确的展现! 可但是!但可是!如果全篇用px布局会暗藏一个蛋疼的问题,就是当用户和Ctrl滚 ...
- 关于px、em和rem的学习笔记!
刚参加前端工作,字体一般使用px来设置大小,在处理响应式界面时对字体的大小变化处理感觉很吃力,得知对字体的大小有三种大小格式设置方式,便想一探究竟,希望可以有所帮助! px px像素(Pixel),相 ...
- css中单位px、pt、em和rem的区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...
- px,em,rem
px:像素是相对于显示器屏幕分辨率而言的相对长度单位.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和rem. em:继承 ...
随机推荐
- uva 401 Palindromes 解题报告
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 值域线段树 (玲珑OJ 1117)
点击打开题目链接 题目意思很简单: 1.插入x 2.把小于x的数变成x 3.把大于x的数变成x 4.求集合中第x小数 5.求集合中小于x的数个数 思路: 线段树,节点是值的分数,你可以离散,也可以不离 ...
- hdu-5776 sum(同余)
题目链接: sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Pro ...
- Python:深浅拷贝
导入模块: >>> import copy 深浅拷贝: >>> X = copy.copy(Y) #浅拷贝:只拷贝顶级的对象,或者说:父级对象 >>&g ...
- Linux-内存进程和软件安装
1 swap分区 swapon -s 查看swap分区 mkswap 某分区挂载点 swapon -a 分区 激活该swap swapoff 挂载点 取消swap分区 2 内存 free 查看内存空间 ...
- vue 常用的表单验证,包括手机号码,固定电话和身份证...
<template> <div> <pl-content-box> <pl-page-nav :show-previous=true></pl-p ...
- HDU2190
悼念512汶川大地震遇难同胞——重建希望小学 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- 电商:html样式集合
1. <span class="big" style="text-decoration:line-through;">原价:¥{zlcms:art ...
- UVaLive 10859 Placing Lampposts (树形DP)
题意:给定一个无向无环图,要在一些顶点上放灯使得每条边都能被照亮,问灯的最少数,并且被两盏灯照亮边数尽量多. 析:其实就是一个森林,由于是独立的,所以我们可以单独来看每棵树,dp[i][0] 表示不在 ...
- 609. Find Duplicate File in System
Given a list of directory info including directory path, and all the files with contents in this dir ...