1、px:像素(Pixel)

px是相对长度单位,他是相对于显示器屏幕分辨率而言的

优点:比较稳定、精确

缺点:在浏览器 中放大或者缩小浏览页面,会出现页面混乱的情况。

如下例子:

.buttonPX{
width:100px;
height:60px;
line-height:60px;
display: inline-block;
font-weight:bold;">#00a0b6;
-webkit-border-radius:90px;
-moz-border-radius:60px;
border-radius:15px;
font-size:24px;
color:#fff;
text-decoration: none;
text-align: center;
border:none
}
<button type="button" class="buttonPX">确定</button>
效果:

2、em:是相对长度单位

em是相对于父元素来设计字体大小的,如果当前对行内文本的字体尺寸为被人为设置,则em是相对于浏览器的默认字体尺寸。浏览器默认的字体是16px,所以未经调整的浏览器都符合 1em = 16px,为了方便使用em时,通常在css的body中声明font-size=62.5%(16*62.5%=10px)

缺点:em的值并不是固定的,他会继承父元素的字体大小

如同样设置48px的字体,设置父元素的大小和不设置父元素的大小的区别

.box1{
font-size:12px;
}
.buttonEm{
width:200px;
height:60px;
line-height:60px;
display: inline-block;
font-weight:bold;">#00a0b6;
-webkit-border-radius:90px;
-moz-border-radius:60px;
border-radius:15px;
font-size:4em;//注意此处
color:#fff;
text-decoration: none;
text-align: center;
border:none
}
.buttonEm2{
width:200px;
height:60px;
line-height:60px;
display: inline-block;
font-weight:bold;">#00a0b6;
-webkit-border-radius:90px;
-moz-border-radius:60px;
border-radius:15px;
font-size:3em; //注意此处
color:#fff;
text-decoration: none;
text-align: center;
border:none
}
<div class="box1">
<button type="button" class="buttonEm">确定</button> //设置了父元素的字体大小
</div>
<br>
<div class="box2">
<button type="button" class="buttonEm2">确定</button> //未设置父元素的字体大小
</div>
如果将其中的宽度等其他元素也改为em单位,则width=10em的实际宽度为width=48(行内文本字体的尺寸)*10 = 480px,也就是width的基本单位1em=fontsize的大小

3、rem (root em,根 em)

rem是相对单位,是相对与html根节点的单位

rem 主要是通过html 节点的fontsize确定的,所以不存在逐层复合的连锁反应

在JS的window.resize 事件中,动态的控制html节点的fontsize的大小,来动态控制rem的比例

设置rem单位的方法

方法一:直接在css样式中写一下代码即可:

html{

font-size:20px; //表示1rem相当于常用的20px,1rem = 20px

}

为了兼容适配不同的屏幕,也可斜成下面这样

html{
font-size : 20px;
}
@media only screen and (min-width: 401px){
html {
font-size: 25px !important;
}
}
@media only screen and (min-width: 428px){
html {
font-size: 26.75px !important;
}
}
@media only screen and (min-width: 481px){
html {
font-size: 30px !important;
}
}
@media only screen and (min-width: 569px){
html {
font-size: 35px !important;
}
}
@media only screen and (min-width: 641px){
html {
font-size: 40px !important;
}
}

方法二:使用js动态的实现此效果

(function(doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange': 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return; if (clientWidth > 1920) {
clientWidth = 1920;
docEl.style.fontSize = 25 * (clientWidth / 1200) + 'px'; //font-size=25
}
else if (clientWidth > 900) {
docEl.style.fontSize = 25 * (clientWidth / 1200) + 'px';//font-size = 25
}
else if (clientWidth >= 320) {
docEl.style.fontSize = 100 * (clientWidth / 500) + 'px';//font-size = 100
}
else if (clientWidth >= 320) {
clientWidth = 320;
docEl.style.fontSize = 100 * (clientWidth / 500) + 'px';//font-size = 100
}
}; if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

除了ie8以外,其他的都兼容rem

浅谈rem、em、px的更多相关文章

  1. mobile css & rem & em & px

    mobile css & rem & em & px 1 rem === 16px 任意浏览器的默认字体高都是 16px, 所有未经调整的浏览器都符合: 1em=16px, 那 ...

  2. 字体的设置 REM EM PX

    px 1 一般设置页面的字体使用px 2 优点:字体设置比较稳定和精确 3 缺点:他会修改用户浏览器中的字体大小 EM 相对于父元素的字体大小,字体大小不确定,容易混乱,“em”是相对于其父元素来设置 ...

  3. rem ,em ,px的区别

    参考网址:http://www.cnblogs.com/leejersey/p/3662612.html

  4. 简谈CSS 中的 em,rem,px,%

    在实际工作中,可能我们用的比较多的是‘%’ 和 px,但是我们也经常看到很多网站和css框架里用的是em 或rem.而‘%’ 和px已经都是比较常见或者说是常用.但是em 和rem 却鲜有使用,一直以 ...

  5. 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 ...

  6. 浅谈css3长度单位rem,以及移动端布局技巧

    rem是什么? rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位.root!!!!!!!!!根节点,也就是 ...

  7. 浅谈静态布局、流式布局,rem布局,弹性布局、响应式布局

    静态布局: 特点:没有兼容性问题 PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分:移动设备:另外建立移动网站,单独 ...

  8. 【转】Android Canvas的save(),saveLayer()和restore()浅谈

    Android Canvas的save(),saveLayer()和restore()浅谈 时间:2014-12-04 19:35:22      阅读:1445      评论:0      收藏: ...

  9. 浅谈OCR之Onenote 2010

    原文:浅谈OCR之Onenote 2010 上一次我们讨论了Tesseract OCR引擎的用法,作为一款老牌的OCR引擎,目前已经开源,最新版本3.0中更是加入了中文OCR功能,再加上Google的 ...

随机推荐

  1. 网络转载——java接口的概念

    为什么会出现接口? 接口的出现是为了扩展java中的类继承的单调性.这样使得功能更加丰富. 接口关键字? 定义接口interface,实现一个接口  implements 什么接口呢? 接口是一种特殊 ...

  2. java学习第14天(集合的框架和基本遍历)

    今天主要是接触了集合的概念,集合简单意义上来说就是类对象的集合,我们一般用Collection 这个接口来表示,集合主要体系为: Collection |--List |--ArrayList |-- ...

  3. 转 Jmeter之Bean shell使用(二)

    上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean shell,本文是对上文的一个补充,主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求.本节内容如 ...

  4. 用CMake屏蔽Release运行时的控制台窗口

    在默认情况下,CMake构建的VS工程运行时会弹出控制台窗口,可以通过手动方式进行屏蔽,也可以通过CMake命令进行屏蔽. 手动方式:分为两步 第一步:右击VS项目,选择"属性"- ...

  5. ThinkPHP单字母函数(快捷方法)使用总结

    在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...

  6. iOS7——UIControlEventTouchDown延迟响应问题

    问题描述 在iOS7下开发,真机调试时,UIButton的其他事件响应都正常,但是UIControlEventTouchDown事件响应会延迟,而且不同响应区域发生的延时情况不同,有时延迟1s以后响应 ...

  7. C# ASP.NET(配置数据库 sql server 地址的两种形式以及配置信息的获取)

    ( 1 ) 数据库装在本机,并且采用windows认证模式 <connectionStrings>    <add name="SQLConnectionString&qu ...

  8. Centos安装jdk

    运行Java应用的时候,提示无法找到JAVA_HOME,查询java -version [jifeng@localhost bin]$ java -version java version " ...

  9. SQL Server 的表数据简单操作

    --表数据操作----添加表数据----向现有表添加数据--[use 要操作数据表的数据库名称go]insert [into] 数据表 [(字段名1,字段名2,字段名3, ...)] values(值 ...

  10. Unix调试工具dbx使用方法

     dbx 命令 用途 提供了一个调试和运行程序的环境. 语法 dbx [ -a ProcessID ] [ -c CommandFile ] [ -d NestingDepth ] [ -I Dire ...