em和rem及rem在移动的应用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
html{font-size:16px;}
body{font-size:14px;}
div{font-size:12px;}
p{font-size:18px;width: 10em;}
</style>
</head>
<body>
<div>
<p>哈哈哈哈</p>
</div>
</body>
</html>
本例中 p 的宽度是180px
解释:10*18=180px;
em: 如果p本身有font-size,em就以它本身为基准
如果p本身没有font-size,em就以有font-size样式最近的父类,即先找div有没有font-size,如果没有找body,还没有找html。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
html{font-size:16px;}
body{font-size:14px;}
div{font-size:12px;}
p{font-size:18px;width: 10rem;}
</style>
</head>
<body>
<div>
<p>哈哈哈哈</p>
</div>
</body>
</html>
本例中 p 的宽度是160px
解释:10*16=180px;
rem:是以根元素为基准计算的
rem在移动端的运用
移动端设计稿常见宽度尺寸是640px和750px
运用rem实现移动端响应式布局,应该这么做:
首先在js中加入如下代码:
!function(n){var e=n.document,t=e.documentElement,i=720,d=i/100,o="orientationchange"in n?"orientationchange":"resize",a=function(){var n=t.clientWidth||320;n>720&&(n=720),t.style.fontSize=n/d+"px"};e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1))}(window);
这段代码的作用是:在不同手机上显示页面的时候,根节点html的font-size不同,这样用rem为单位的dom元素的样式才会不一样,比如:width,margin之类的。
效果如下:
ipone4 320*480 显示结果

iphone6 375*627 显示结果

设计稿应该是基于iphone4或者iphone5来的,所以它的设计稿竖直放时的横向分辨率为640px,
为了计算方便,取一个100px的font-size为参照,那么body元素的宽度就可以设置为width: 6.4rem,
于是html的font-size=deviceWidth / 6.4。这个deviceWidth就是viewport设置中的那个deviceWidth。
根据这个计算规则,可得出本部分开始的四张截图中html的font-size大小如下:
deviceWidth = ,font-size = / 6.4 = 50px
deviceWidth = ,font-size = / 6.4 = .59375px
deviceWidth = ,font-size = / 6.4 = .6875px
deviceWidth = ,font-size = / 6.4 = .125px
设计稿750px同理:
deviceWidth = 320,font-size = 320 /7.5px
deviceWidth = 375,font-size = 375 / 7.5px
deviceWidth = 414,font-size = 414 /7.5px
deviceWidth = 500,font-size = 500 / 7.5px
设计稿的margin如果是20px就是20/100=0.2rem
所有设计稿上的width,height,margin,padding,都是除以100转换为rem
可以参看网易:http://3g.163.com/touch/all?version=v_standard
移动端不用rem的布局方式
这种app是一种典型的弹性布局:关键元素高宽和位置都不变,只有容器元素在做伸缩变换。对于这类app,记住一个开发原则就好:文字流式,控件弹性,图片等比缩放。以图描述:

可以参看拉钩网:http://www.lagou.com/custom/list.html?utm_source=m_cf_cpt_baidu_pc&m=1
em和rem及rem在移动的应用的更多相关文章
- 理解em,rem以及rem的失效问题
在平常做网站写代码的时候一般都是使用px,在之前的学习时就略微的学习了一些关于em.rem的知识,但是由于一直没有用到过,所以几乎全部忘记了.今天在研究一些知识的时候用到了em,所以特意将学到的知识总 ...
- css单位em、px、rem和pt的区别
1.PX :像素(Pixel) PX是相对长度单位,它是相对于显示器屏幕分辨率而言的. 优缺点:比较稳定和精确,但在浏览器中放大或缩放浏览页面时会出现页面混乱的情况. 2.EM:是相对长度单位. EM ...
- 响应式布局rem、rem方法封装、移动端响应式布局
相信大家在做移动端的时候都会做各个手机的适配这种适配就是响应式布局在之前做网站的响应式从pc到手机用的是媒体查询 @media screen and (max-width: 300px){} 最大宽度 ...
- px,em,rem
px:像素是相对于显示器屏幕分辨率而言的相对长度单位.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和rem. em:继承 ...
- 彻底弄懂css中单位px和em,rem的区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 -1. IE无法调整那些使用px作为单位的字体大小: -2. 国外的大部分网站能够调 ...
- 搞清css的单位 px,em,rem的区别
前言:现在上大街一眼望去,基本上90%的人都拿着手机,走路,逛街,吃东西都不停着,所以对于我们这种前端开发的程序猿来说,让网页适应于移动端可以说是必须要满足的.所以最近也是一直在学习和实践.然后就接触 ...
- (转)px、em、rem的区别和使用
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem(国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位),那么三者有什么区别,又各自有什么优劣呢? 一.px特点 1. IE ...
- /px/em/rem/的区别
PX特点: 1 .IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3.Firefox能够调整px和em,rem,但是96%以上 ...
- css大小单位px em rem的转换和详解
css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...
随机推荐
- 更强大的trim功能,过滤汉字等
第一种方法:通过php自带的函数 <?php /* trim 去除一个字符串两端空格, rtrim 是去除一个字符串右部空格, ltrim 是去除一个字符串左部空格. */ ?> < ...
- php源码安装
要用swoole,首先需要有PHP环境.由于swoole的某些特性,最好是能够从源码编译安装PHP,这样在使用过程中可以避免很多不必要的错误.PHP下载地址:http://php.net/在这里挑选你 ...
- ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用
原文:ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用 在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字 // ...
- Magento修改邮件模板内容
Magento 默认邮件模板 都是带着官方的标志和一些官方的基本信息.为了建立品牌形象我们需要把邮件模板中的所有官方信息换成自己的信息.修改步骤如下: 1.找到Magento的邮件模板文件(这里以 e ...
- sqlserver总结-视图及存储过程
视图中不能声明变量,不能调用存储过程,如果写比较复杂的查询,需要应用存储过程 视图也可以和函数结合 存储过程通过select或其他语句返回结果集 除此之外,存储过程返回结果只有两种方式 1 retur ...
- iOS 时间戳
时间戳用过一回,总结一下: 1.在Terminal下获得时间戳: date +%s 原来要在服务器端挂文档,方便开发商下载,用时间戳作为文件名称来区分. 2.在程序下获得时间戳: NSDate * n ...
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...
- 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...
- JQuery:JQuery添加元素
JQuery:添加元素通过 jQuery,可以很容易地添加新元素/内容.添加新的HTML内容.我们将学习用于添加新内容的四个jQuery方法: append() - 在被选元素的结尾插入内容 prep ...
- 3.Python编程语言基础技术框架
3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...