首先,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的更多相关文章

  1. css大小单位px em rem的转换和详解

    css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...

  2. css中的单位px,em和rem的区别

    一.px: px就是像素,用px设置字体大小的时候会比较精确,但是有时候我们会使用不同屏幕尺寸去浏览网页.当页面相应的扩大或者缩小的时候,页面的字体大小就会出现过小或者过大.由于这种问题,就提出了使用 ...

  3. CSS中的单位px、em、rem、%、vw、vh、vm

    px 相对长度单位,像素px 是相对于显示器屏幕分辨率而言的.是我们网页设计常用的单位,也是基本单位. 通过 px 可以设置固定的布局或者元素大小,缺点是没有弹性.用 px 设置字体大小时,比较稳定和 ...

  4. 搞清css的单位 px,em,rem的区别

    前言:现在上大街一眼望去,基本上90%的人都拿着手机,走路,逛街,吃东西都不停着,所以对于我们这种前端开发的程序猿来说,让网页适应于移动端可以说是必须要满足的.所以最近也是一直在学习和实践.然后就接触 ...

  5. CSS尺寸单位 % px em rem 详解

    在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位.相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位.字体相对单位有:em.ex.ch.rem:视窗相对单位有:vw.vh.v ...

  6. css单位px,em,rem区别

    在css中单位长度用的最多的是px.em.rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变. em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定 ...

  7. css中字体单位px,pt,em,百分比之间的区别和用法

    px 即像素,一般国内网站使用较多,默认大小是16px; pt 印刷行业常用单位 em  相对单位,相对父元素属性的单位 ,一般用于移动端布局 rem  结合相对定位和绝对定位的优势,相对根元素htm ...

  8. css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况

    原文地址: http://blog.csdn.net/jyy_12/article/details/42557241 px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果 ...

  9. css 单位 px em rem

    http://www.cnblogs.com/leejersey/p/3662612.html

随机推荐

  1. EasyUI的datagrid列属性添加超链接

    $("#dg").datagrid({        url: "../Ajax/PurchaseAjax.ashx",        queryParams: ...

  2. 《STL源码剖析》——第一、二、三章

     第一章:概论: 换句话说,STL所实现的,是依据泛型思维架设起来的一个概念结构.这个以抽象概念(abstract concepts)为主体而非以实际类(classes)为主体的结构,形成了一个严谨的 ...

  3. JAVA线程初体验

    线程的创建 线程的启动和停止 /** * 演员类 继承Thread类 * @author Administrator * */ public class Actor extends Thread { ...

  4. 创建配置中心服务端(Spring Cloud Config)

    创建配置中心服务端 创建好项目后添加配置文件内容 server.port=9004 spring.application.name=spring-cloud-config-server-01 #git ...

  5. 验证客户端的合法性、socketserver模块

    一.为了防止客户端被人非法利用,需要在使用之前对客户端进行合法性验证.接下来就是客户端验证的几种方法 hmac  加密方法 import socket import os import hmac #能 ...

  6. Capture pictures using Jpython

    Becuz it is a jpython code, we can use it in Sikuli. from time import strftime, gmtime from java.awt ...

  7. python学习第二十八天函数局部变量的用法

    函数局部变量是在函数里面的变量,只能在函数内部使用,如果函数没有找对应变量,函数将去函数外部找对应变量,局部变量优先级大于外部变量,详细说明一下 1,局部变量已经定义值 name='zhan san' ...

  8. CodeForces 739B Alyona and a tree (二分+树上差分)

    <题目链接> 题目大意: 给定一颗带权树,树的根是1,树上每个点都有点权,并且还有边权.现在给出“控制”的定义:对一个点u,设v为其子树上的节点,且$dis(u,v)≤val[v]$,则称 ...

  9. cronsun任务管理器部署文档

    一.cronsun介绍 1)cronsun产生的背景 大量的 crontab 任务散布在各台服务器,带来了很高的维护成本 任务没有按时执行,甚至失败了很久才发现,需要重试或排查 crontab 分散在 ...

  10. 5.把报表集成到Web应用程序中-生成网页和导出两种方式

    转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html 第四部分,把报表集成到Web应用程序中 用MyEclipse新建一个Web ...