移动端开发之px,em和rem详解
px:表示的是绝对的像素值,1px就是1像素大小
em:关于em,网上有资料说是关于父元素的,但是其实个人感觉这种说法是不对的,其实em的大小是根据自身的font-size确定的,而只是正常的情况下子元素继承了父元素的font-size
rem:是指根元素的大小,比如跟元素大小是16px(浏览器默认font-size),那么1rem的大小就是16px
举个例子:
我们先来写一段代码:
<div class='div1'>
<div class='div2'></div>
</div>
.div1{
width: 100px;
height: 100px;
font-size: 16px;
}
.div2{
width: 1em;
height: 1em;
background: red;
}
上面的代码中,我们在浏览器运行就会得到结果,div2的width和height为16px,也就是现在div2元素的font-size的值也就是他的父元素设置的font-size的值,下面我们来改写下上面代码的css:
.div1{
width: 100px;
height: 100px;
font-size: 16px;
}
.div2{
width: 1em;
height: 1em;
font-size: 12px;
background: red;
}
当我们在div2的style里面设置了自己的font-size为12px,我们在运行代码,我们可以得到我们当前的div2中的width和height的值为12px。这样子我们就可以得到结论,em的值其实是根据自己来设定的,准确的说是自己的font-size的值,由此可见网上很多说em是相对于父元素的值的说法是错误的。
但是在开发中我们的每个元素都有不同的font-size那么我们就需要根据这个计算出不同的width和height的em值,这样子无论是开发还是维护起来成本都太高了,还有一个更严重的问题是层级嵌套会让我们对每个元素的font-size变得混乱。
所以一个更加友好的元素rem诞生。
所谓的rem根据的就是跟节点的font-size的值,举个例子:
html{
font-size: 20px;
}
.div1{
width: 1rem;
height: 1rem;
font-size: 12px;
background: red;
}
<div class='div1'></div>
运行上面的代码,我们得到了当前div的width和height的值为20px,看来rem集成的是html的font-size并没有继承自己的font-size这样子我们开发起来就有一个相对的值了,这样的意义在于我们可以根据不同页面的width来设置不同的font-size值来实现移动端的适配问题,这个也就是手淘flexible的设计原理了,下一章我将会给大家讲解一下关于flexible的源代码!
移动端开发之px,em和rem详解的更多相关文章
- css中的px、em、rem 详解
概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时 ...
- 【转】Android开发之Bitmap的内存优化详解
本文来源:转载自: http://mobile.51cto.com/abased-410796.htm 在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitma ...
- android开发之wheel控件使用详解
出门在外生不起病呀,随便两盒药60多块钱.好吧,不废话了,今天我们来看看wheel控件的使用,这是GitHub上的一个开源控件,用起来十分方便,我们可以用它做许多事情,比如做一个自定义的datepic ...
- 手游开发之lua的class函数详解
众所周知,lua没有类这个概念但其通过table实现了面向对象的“类”.在cocos2dx引擎下提供了class(className, ...)函数方法名,因为在脚本开发中这个接口基本都会用来创建一个 ...
- Android开发之5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
- Python全栈开发之8、装饰器详解
一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了.转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5486253.html 一.装饰器 装饰器可以使函数执 ...
- android开发之eclipse调试debug模式详解
之前我写了一个相关的帖子,但是今天看了一个还是写的比我详细,于是我拿过来和大家分享. 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在Eclipse中一共有三种添加断 ...
- CSS文字大小单位px、em、pt详解
这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...
- 2. EM算法-原理详解
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 概率 ...
随机推荐
- 项目:Android平台txt阅读软件
项目:Android平台txt阅读软件 项目组成员:20145107李长达.20145110屠轶成.20145120黄玄曦.20145122程智崟 Need: 从古至今,阅读都是人类生活中的一大部分, ...
- Migrating from Spring 3 to Spring 4 - org.springframework.scheduling.quartz.CronTriggerBean
I'm trying to migrate from spring 3.0.5 to spring 4.1.X . Spring 3 has Class named as "org.spri ...
- Cannot perform runtime binding on a null reference
一个方法的参数是dynamic obj 方法内调用了obj.Header 但是外部传递进来的obj是null,然后就会报这个错.
- POJ 1034 The dog task(二分图匹配)
http://poj.org/problem?id=1034 题意: 猎人和狗一起出去,狗的速度是猎人的两倍,给出猎人的路径坐标,除了这些坐标外,地图上还有一些有趣的点,而我们的狗,就是要尽量去多的有 ...
- 测试工程师 技能要求:java编程,数据库,linux操作系统,自动化测试开发,性能测试,安全测试
1.具有开发和测试经验,能负责带领大型项目测试 2.掌握或熟悉java编程,熟悉mysql,oracle等db,memcache,nosql等,有互联网行业从业经验 3.可撰写自动化测试工具以及搭建自 ...
- Sublime编辑器上的Linux Vim插件常用快捷键
Sublime编辑器上的 Vim 插件常用快捷键 vim 的设置: 在Reference-> User Settings(首选项--> 设置用户) 选项,点击进入配置文件编辑状态,默认的用 ...
- hdu 1004 Let the Balloon Rise strcmp、map、trie树
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- CentOS环境Docker安装教程(官方推荐的docker三种方式安装)
CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...
- Eclipse开发Android应用 找不到平板
1.驱动安装正确2.平板的连接方式正确,不要用大容量存储/sd卡模式这个设置在4.3上很难找呀.设置->存储->点右上角的菜单 3.打开USB调试.4.上述问题都检查后,在eclipse里 ...
- FastJson中文乱码
初学springboot使用fastJson替换默认的jackson后出现中文乱码 解决方式1: import java.util.ArrayList; import java.util.List; ...