关于CSS中的单位px、em、rem
首先,px、em、rem都是相对单位;
px(pixel像素)是相对于显示器屏幕分辨率的,IE无法调整那些使用px作为单位的字体大小;
em是相对于当前对象内文本字体的尺寸,如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册),不过需要注意的是em单位会继承父级元素的字体大小;
而rem是CSS3新增的一个相对长度单位(root em,根em);那么这个单位与em有什么区别与联系呢?rem和em单位一样,都是一个相对单位,不同的是em是相对于父元素的font-size进行计算,而rem是相对于根元素html的font-size来进行计算的 , 这样一来rem就绕开了复杂的层级关系,实现了类似于em单位的功能。目前除了IE8及其更早版本的浏览器其他的都已支持rem;
任意浏览器的默认字体高都是16px;所有未经调整的浏览器都符合: 1em=16px,那么12px=0.75em,10px=0.625em;为了简化font-size的换算,需要在css中的body选择器中声明 Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样1em=10px, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
所以我们在用em作为单位时,需要注意三点:
1. body选择器中声明Font-size=62.5%;
2. 将你的原来的px数值除以10,然后换上em作为单位;
3. 重新计算那些被放大的字体的em数值,避免字体大小的重复声明;
关于第三点,也就是避免1.2 * 1.2= 1.44的现象;比如说你在#div1中声明了字体大小为1.2em,那么在声明#div1的子元素#div2的字体大小时就只能是1em,而不是1.2em;若是1.2em,它会因继承了#div1的字体高而变为了1.2*1.2=1.44相对长度; 所以em的值其实并不是固定的,它会继承父级元素的字体大小;
默认情况下浏览器给的字体大小是16px,所以按照转化关系 16px = 1rem;使用rem布局的时候,为了兼容不同的分辨率,我们应该要动态的修正根字体的大小,让所有的用rem单位的子元素跟着一起缩放,从而达到自适应的效果;一般情况在项目的最前面加载一段js来修改html的font-size,针对不同分辨率计算font-size,监听浏览器更改 html的font-size;给html设置fontSize大小,其实就是在DOMContentLoaded或者resize变化后调整fontSize的大小,从而调整rem的比值关系;
下面贴上Aaron大神在慕课上讲圣诞节的时候讲到的代码,实现监听浏览器更改html的font-size;ps:非Ctrl c+v , 良心手打~嘤嘤
var docEle=document.documentElement; //当用户翻转设备(即设备横向持或纵向持,方向发生改变时)此事件被触发; //在绑定resizeEvt事件时,注意当浏览器不支持orienrationchange事件时我们绑定resize事件;总之就是监听当窗口发生变化时就 需要重新设置根字体的值; resizeEvt='orientationchange' in window ? 'orientationchange' : 'resize' , reCal=function(){ // ① docEle.style.fontSize=20*(docEle.clientWidth/320)+'px'; } 绑定浏览器缩放与加载事件 windows.addEventListener(resizeEvt , reCal , false); windows.addEventListener(DOMContentLoaded , reCal , false); |
注意docEle.style.fontSize=20*(docEle.clientWidth/320)+'px'这个公式不是一定的,需要根据不同情况定义,具体的可参见:http://www.data321.com/fe659370;
使用rem作为单位的话,比如 在浏览器默认情况html内字体大小为16px时,一个需要显示字体大小为14px的div 可以直接设置样式为font-size:.875rem就可以了;
关于CSS中的单位px、em、rem的更多相关文章
- css大小单位px em rem的转换和详解
css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...
- css中的单位px,em和rem的区别
一.px: px就是像素,用px设置字体大小的时候会比较精确,但是有时候我们会使用不同屏幕尺寸去浏览网页.当页面相应的扩大或者缩小的时候,页面的字体大小就会出现过小或者过大.由于这种问题,就提出了使用 ...
- CSS中的单位px、em、rem、%、vw、vh、vm
px 相对长度单位,像素px 是相对于显示器屏幕分辨率而言的.是我们网页设计常用的单位,也是基本单位. 通过 px 可以设置固定的布局或者元素大小,缺点是没有弹性.用 px 设置字体大小时,比较稳定和 ...
- 搞清css的单位 px,em,rem的区别
前言:现在上大街一眼望去,基本上90%的人都拿着手机,走路,逛街,吃东西都不停着,所以对于我们这种前端开发的程序猿来说,让网页适应于移动端可以说是必须要满足的.所以最近也是一直在学习和实践.然后就接触 ...
- CSS尺寸单位 % px em rem 详解
在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位.相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位.字体相对单位有:em.ex.ch.rem:视窗相对单位有:vw.vh.v ...
- css单位px,em,rem区别
在css中单位长度用的最多的是px.em.rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变. em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定 ...
- css中字体单位px,pt,em,百分比之间的区别和用法
px 即像素,一般国内网站使用较多,默认大小是16px; pt 印刷行业常用单位 em 相对单位,相对父元素属性的单位 ,一般用于移动端布局 rem 结合相对定位和绝对定位的优势,相对根元素htm ...
- css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
原文地址: http://blog.csdn.net/jyy_12/article/details/42557241 px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果 ...
- css 单位 px em rem
http://www.cnblogs.com/leejersey/p/3662612.html
随机推荐
- C#计算两个日期的相隔天数
DateTime start = Convert.ToDateTime(dateStart.ToShortDateString()); DateTime end = Convert.ToDateTim ...
- Python3数据科学入门与实践学习教程
整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关注下面几点: 1.为了追求精 ...
- JavaScript Is or isNot
读书笔记,简化代码--不对外公布,只是做笔记使用. var superman = { name: "Superman", strength: "Super", ...
- golang的数据类型之整型类型
数据类型: 整数 : int, int32, int64, uint, uint32, uint64 字符串 : string 布尔:bool 浮点:float32 float64 uint 表示无符 ...
- Oh My God!e.printStackTrace() 导致系统卡崩
作者:sxgkwei 来源:http://dwz.cn/tQe4fLeDe.printStackTrace() 会导致锁死?这仅仅是打印啊,怎么可能?!先别惊呼不可能,且听我细细道来.先看截图1:注意 ...
- Manacher(最长递减回文串)
http://acm.hdu.edu.cn/showproblem.php?pid=4513 Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前 ...
- [51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树)
[51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树) 题面 给出一棵N个点的树,Q次询问一点编号在区间[l1,r1]内,另一点编号在区间[l2,r2]内的所有点对距离最大值.\ ...
- Blocks题解(区间dp)
Blocks题解 区间dp 阅读体验...https://zybuluo.com/Junlier/note/1289712 很好的一道区间dp的题目(别问我怎么想到的) dp状态 其实这个题最难的地方 ...
- Panabit的各种配置文件
Panabit的各种配置文件 1.启动配置文件路径:/etc/rc.local作用:这个文件里的内容是BSD启动后会自动执行的命令默认配置如下:fsck -y -t ufs /dev/ad0s2a & ...
- k3 cloud成本调整单引入单据后,再做出库成本核算。成本调整单列表已审核的单据消失,非已审核的单据还在,这是出库成本核算设置参数的问题吗?
存货核算时,会将“期末余额调整”类型的的调整单删除后,再重新产生:因此引入后不要再做出库核算,或者引入其它类型的单据.