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的源代码!

转载于:https://www.cnblogs.com/jcscript/p/5789403.html

移动端开发之px,em和rem详解相关推荐

  1. Flutter开发之iOS后台定位开发详解

    Flutter开发之iOS后台定位开发详解 需求目的 开发一个功能持续获取用户的位置发送给后端,PC端会根据后端传来的移动端发送的位置信息,来绘制使用者的运动轨迹. 实现需求 是否实现 后台定位 ✅ ...

  2. css中的px、em、rem 详解

    概念介绍: 1.px (pixel,像素): 是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印 ...

  3. Discuz!X论坛开发(九)二次开发之Discuz X2 文件目录功能详解

    原文链接: http://www.discuz.net/forum.php?mod=viewthread&tid=2359270&reltid=1625972&pre_thre ...

  4. Android开发之Activity的生命周期详解

    Android生命周期分为两部分: (1)典型情况下的生命周期. (2)异常情况下的生命周期. 典型情况下的生命周期分析 ​图1 Activity的生命周期图解 ​图2 Activity生命周期的金字 ...

  5. android开发之eclipse调试debug模式详解

     之前我写了一个相关的帖子,但是今天看了一个还是写的比我详细,于是我拿过来和大家分享. 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在Eclipse中一共有三种添加断 ...

  6. unturned服务器配置文件,《Unturned》使用Bottle开3.0服务器方法图文详解

    <Unturned>使用Bottle开3.0服务器方法图文详解 2015-02-03 17:04:07来源:贴吧编辑:评论(0) <Unturned>游戏中玩家们可以联机作战, ...

  7. Android Studio打不开虚拟机,两种情况详解

    Android Studio打不开虚拟机,两种情况详解 文章目录 Android Studio打不开虚拟机,两种情况详解 1.VT-x is disabled in BIOS 2.Emulator文件 ...

  8. web开发中的长度单位(px,em,ex,rem),如何运用,看完这篇就够了!

    原创 2017-03-08 web小二 web前端开发 作为一名前端开发人员,css中的长度单位,都是我们在工作中非常熟悉的名词,因为没有它们,我们就不能声明某个字符应该多大,或者某些图像周围应该留白 ...

  9. vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw

    作为一名前端开发,在做移动端适配时rem.vw是我们经常用到的单位,但是我们在实际开发过程中需要将设计稿上的px转换成rem,如果手动去计算,将是一个很耗时.费力的过程.这是就需要一个工具可以帮我们自 ...

  10. 移动端开发之Web App开发

    写在前面:本人刚刚接触移动端开发,希望自己的见解能够帮助到他人,不足之处还望提醒. 1 移动端开发分类 1.1 Native App 原生App开发 优点: (1)用户体验好 (2)性能稳定 (3)操 ...

最新文章

  1. 你还在使用 try-catch-finally 关闭资源?
  2. Origin对于标注点
  3. oracle1537,dataguard 出现ORA-16136错误
  4. mysql 5.1.73.tgz下载_Linux下安装python,mysql
  5. 【php7扩展开发四】函数的参数 ,引用传参 ,返回值
  6. c++错误functional:1526:9: error: no type named ‘type’ in ‘class std::result_of
  7. ----流程控制-条件控制/循环控制\错误控制/程序终止控制
  8. Cookie使用基础
  9. 计算机系统管理程序,计算机系统管理操作程序
  10. 教你炒股票15:没有趋势,没有背驰
  11. 2012年股市楼市泡沫终将破灭
  12. 点亮LED-STM32电控学习笔记03
  13. React 所见即所得编辑器 Vditor
  14. 晒一下图标(自娱自乐)
  15. android浏览器插件开发,Android浏览器插件开发.docx
  16. web自动化之元素定位手段工具
  17. 并查集——NUIST OJ P1648 炼丹术为例
  18. springboot常用注解详解
  19. Flyweight模式——读书笔记
  20. 什么是全角空格?什么是半角空格?

热门文章

  1. cobol学习之十数据库的增删改查模板
  2. BZOJ 3329 Xorequ 数字DP+矩阵乘法
  3. 番茄花园 Ghost XP SP3 极速装机版 V2013.05
  4. Maven的-pl -am -amd参数学习 -am 踩过的坑
  5. NodeJs妹子图爬虫
  6. 如何打日志才能方便排查问题?
  7. 互联网公司忽悠员工的黑话,套路太深了。。
  8. 用漫画让你彻底搞懂 Linux 内核到底长啥样!
  9. 1 月份 Github 上最热门最有价值的开源项目
  10. 数据中心已死:2025 年 80% 将关闭,目前 10%