ESCEBT

用一辈子了解自己

  • 主页
  • 其他
所有文章 关于我

ESCEBT

用一辈子了解自己

  • 主页
  • 其他

HTML中的rem与em的区别

2017-07-26

用法:rem与em都是界面中的两个单位,常被用来移动端做适配

rem单位

1
2
3
4
5
6
7
8
<html>
<style>
.c1 {font-size: 2.0rem;}
</style>
<body>
<p class="c1">hello world</p>
</body>
</html>

这一段代码的出来最后的p标签内字体的大小是多少像素?
答案是2*16 = 32px;

根元素html标签默认字体是16px大小
rem是根据叶根元素(即html标签)的大小来确定大小

em单位

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<style>
.d1 {font-size: 2.0em;}
.d2 {font-size: 2.0em;}
.c2 {font-size: 2.0em;}
</style>
<body>
<div class="d1">
<div class="d2">
<p class="c1">hello world</p>
</div>
</div>
</body>
</html>

这一段代码的出来最后的p标签内字体的大小是多少像素?
答案是 2 * 2 * 2 * 16 = 128px;

根元素html标签默认字体是16px大小
em是根据父元素的大小来确定大小
因此,em单位不能乱用,其大小受到父元素大小影响,而父元素大小也受祖孙影响时,则会导致严重的不可控。

关于vw,vh和vmin,vmax

vw:视窗宽度的百分比,1vw表示视窗的宽度为1%;vh:视窗高度的百分比;vmin:当前 vw 和 vh 中较小的一个值; vmax:当前 vw 和 vh 中较大的一个值;

vw,vh与%的区别

(1)% 是相对于父元素的大小设定的比率,vw、vh 是视窗大小决定的。
(2)vw、vh 优势在于能够直接获取高度,而用 % 在没有设置 body高度的情况下,是无法正确获得可视区域的高度的,所以这是挺不错的优势。

vmin与vmax用处

做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。
由于 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就可以用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。

总结:何时使用em何时使用rem

  • 对于去适配移动端,rem显然比em好得多,而且现阶段兼容性也很好。
  • 当比如我们的按钮要随着终端设备的不同而变大变小时,我们不妨使用em来设计其line-height, height, width, padding和margin等,而此时其文字大小则建议使用rem
赏

多谢支持啦~

支付宝
微信
  • html

扫一扫,分享到微信

微信分享二维码
vue中组件的相关知识
CSS的权重问题
© 2019 ESCEBT
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • Javascript
  • vue Node.js 前后端交互
  • Css
  • Debug
  • html
  • vue
  • ES6 Javascript
  • Ajax

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

千千万万码农中的一位
平时没事就喜欢读读书
大学才开始接触的编程
这里套用我尊敬的林老的一句话:
把有限的生命奉献到无限的代码中去吧