移动端开发之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. 前言 概率 ...
随机推荐
- 漏洞利用之Metasploit使用过程
漏洞利用之Metasploit使用过程 先扫描端口,看开放的服务,如开放ftp,版本是vsftpd 2.3.4:使用search搜索vsftp查看是否在相应的漏洞利用exploit,输入search ...
- Python3基础 三元运算符 简单示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 简单线性dp
小zc现在有三个字符串,他想知道前两个字符串能不能生成第三个字符串,生成规则如下:第一个串的每个字符都可以往第二个串的任意位置插入(包括首尾位置),但必须保证来源于第一个串中的字符在生成后的串中的相对 ...
- luogu P1162 填涂颜色
https://www.luogu.org/problem/show?pid=1162 //其实很简单的吧 //就是最外圈加一圈0 ,然后把外圈里面的0都遍历了 //剩下的0 就变成2 就行了 #in ...
- FW: How to use Hibernate Lazy Fetch and Eager Fetch Type – Spring Boot + MySQL
原帖 https://grokonez.com/hibernate/use-hibernate-lazy-fetch-eager-fetch-type-spring-boot-mysql In the ...
- Android -- 在一个Activity开启另一个Activity 并 获取他的返回值。
1. 视图示例, 按选择弹出 2界面, 选择选项 回显到1 2. 示例代码 MainActivity.java, 第一个activity public class MainActivity e ...
- Linux删除重复行 排序和不排序的做法--转载
本文部分翻译自这里,来自 Jadu Saikia 的博客,这个博客上有很多非常有用的小技巧,有空可以多看看. 通常如果我们想获取一个文件里不重复的行的时候,我们可以直接通过 sort -u 命令,先把 ...
- codeforces 200 div2 C. Rational Resistance 思路题
C. Rational Resistance time limit per test 1 second memory limit per test 256 megabytes input standa ...
- install ros-indigo-filters
CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake: (find_package): Could not fi ...
- USB.资料
1.百度搜索 “usb java” 1.1.基于usb4java实现的java下的usb通信 - tomi_mint - 博客园.html(https://www.cnblogs.com/sowhat ...