目录

1,绝对单位和相对单位

2,em的使用分三种情况:

1,把各个方向的padding的值设置为字号大小

2,对font-size 使用em

3,对font-size和padding等同时使用相对单位

3,rem

3.1,相对单位和响应式(一个例子)


1,绝对单位和相对单位

对于现在的互联网,页面有可能会在各种型号的屏幕上展示。既可能是一个5英寸的手机屏,也有可能是一个30英寸的大屏幕。面对这种情况,前端就应该声明一些样式规则,可以让该效果在任何场景下都能跑通。而一个合理的方案就是响应式设计。

响应式 —— 在CSS中,指的针对不同大小的浏览器窗口,用不同的方式响应更新页面的样式。

在响应式布局这个问题上,相对单位是CSS提供的工具之一。

2,em的使用分三种情况:

  1,把各个方向的padding等的值设置为字号大小

设置padding、height、width或border-radius等属性

<style>
.padded {font-size: 16px;padding: 1em;
}
</style><body><div class='padded'>hahaha</div>
</body>

padding赋值为1em,乘以字号,得到一个值为16px的padding渲染值。使用相对单位声明的值会由浏览器转化为一个绝对值,(称为计算值)。在这个例子里,将padding改为2em会生成一个32px的计算值。如果同一个元素的另一个选择器,用一个不一样的字号值去覆盖它,这会改变em在这个域下的基准值,那么padding的计算值也会相应变化。

在设置padding、height、width或border-radius等属性时,使用em可能会很方便,因为它们是以当前元素的字号大小作为基准值的。如果它们继承了不同的字号大小,或者用户更改了字体设置,这些属性会均匀地缩放。

如下面例子:

.box {padding: 1em;border-radius: 1em;background-color: lightgray;
}.box-small {font-size: 12px;
}.box-large {font-size: 18px;
}

使用样式:

<span class="box box-small">Small</span>
<span class="box box-large">Large</span>

效果如下:

  2,对font-size 使用em

em是以当前元素的字号大小作为基准值的。但如果把一个元素的字号设为1.2em的时候表示什么?相对单位在该处的处理是:在font-size上的em会先从继承到的字号大小衍生出来。

举例:

<style>body {font-size: 16px;}.slogan {                  font-size: 1.2em;        }
</style>
<body>We love coffee<p class="slogan">We love coffee</p>
</body>

<body>标签里面,声明字号为16px。在 .slogan中,该类继承父元素的字号大小。 slogan声明的字号大小是1.2em,此时:引用继承的字号16px,16 * 1.2 = 19.2,所以计算字号值是19.2px。效果如上图。

  3,对font-size和padding等同时使用相对单位

这时候事情就变得有点不好控制了。。

举例:

body {font-size: 16px;
}.slogan {font-size: 1.2em;             padding: 1.2em;               background-color: #ccc;
}

此时 slogan中,font-size 的计算还是 16 x 1.2 = 19.2 

但是,padding的计算是相对font-size 的,所以计算的结果是

1.2 x (16 x 1.2) = 23.04

这就很不好了,因为现在大家对padding的期待值也是19.2。尽管从原理上好理解,但是它非常不好用,不够直观,容易出错是最大的问题,也是大家不愿意使用em的原因之一。

为了解决这个问题,我们可以选择rem

3,rem

在HTML 中,根节点是文档里所有其他元素的祖先。它有一个特别的伪类选择器(:root),在样式表里可以用这个选择器表示。rem是根em(root em)的缩写。rem和根元素关联。不管你在文档中的什么地方使用rem,1.2rem的计算值都等于1.2倍的根元素的字号大小

:root {                    font-size: 1em;
}ul {font-size: .8rem;
}
  • 1 伪类 :root 等价于 html 选择器
  • 2 使用浏览器的默认字号大小(16px)

根元素的字号大小是浏览器的默认大小16px(根元素的1em等于浏览器的默认字号大小)。

ul的字号大小为0.8rem,计算结果是12.8px

rem简化了很多em带来的复杂度。事实上,rem是提供了一个介于px和em间的相对单位折中方案。那么,是不是意味着我们应该对所有元素都使用rem呢?当然不是。

在CSS的世界里,这个答案通常是:看情况。rem只是你的工具箱中的其中一个。掌握CSS很重要的一点就是,能够分辨在什么场景下该使用什么工具。我的选择是:

font-size使用rem,对border使用px,对其他的度量方式如paddingmarginborder-radius等使用em。然而声明容器的宽度的话,我更喜欢使用百分比。

3.1,相对单位和响应式(一个例子)

<style>:root {                            font-size: 0.75em;               }                                  @media (min-width: 400px) {        :root {                          font-size: 0.875em;            }                                }                                  @media (min-width: 800px) {       :root {                          font-size: 1em;                }                                }.panel {padding: 1em;                    border-radius: 0.5em;            border: 1px solid #999;          }.panel > h2 {margin-top: 0;                   font-size: 0.8rem;               font-weight: bold;               text-transform: uppercase;       }
</style></head><body><div class="panel"><h2>Single-origin</h2><div class="panel-body">We have built partnerships with small farms around the world tohand-select beans at the peak of season. We then carefully roastin <a href="/batch-size">small batches</a> to maximize theirpotential.</div></div></body>

在上面的代码中,定义了三套根元素的font-size 尺寸, 第一套样式规则,声明了小屏幕中的默认字号大小,这是在较小的屏幕上看到的大小。然后使用媒体查询,把400px和800px分别作为两个分水岭逐级增加字号的大小,覆盖掉默认的代码。

因此尽管你没有直接对这个面板做任何的修改,它现在是响应式的。在小屏幕上字号会被渲染成更小的(12px)。然后,在宽大于400px和大于800px的,字号会分别放大到14px和16px。

媒体查询(media query) —— 通过@media规则来声明样式,在不同的屏幕尺寸或者媒体类型(如打印机或显示器)下,触发对应的样式控制。这是响应式设计的关键要素。

参考链接:

如何更愉快的使用rem

相对单位em 和 rem --读《CSS in depth》相关推荐

  1. css中单位em和rem

    一.介绍 1.em w3cschool中给出css中尺寸单位如下: 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例 ...

  2. em表示什么长度单位_css中单位em和rem的区别

    在css中单位长度用的最多的是px.em.rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变. em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定 ...

  3. html 自适应单位vw,CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比

    css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...

  4. css中的单位换算_CSS单位px、em、rem及它们之间的换算关系

    作者:WangMin 格言:努力做好自己喜欢的每一件事 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者的区别与优势是什么?接下来我们就来学习一下吧! 单位px.em.rem分 ...

  5. rem 前端字体_web前端入门到实战:一次搞懂CSS字体单位:px、em、rem和%

    对于绘图和印刷而言,"单位"相当重要,然而在网页排版里,单位也是同样具有重要性,在CSS3普及以来,更支持了一些方便好用的单位(px.em.rem-等),这篇文章将整理这些常用的C ...

  6. CSS单位 px pt em和rem 之间的区别

    CSS中可以定义大小的单位有四种px,pt,em,rem,而px可以说在网页开发中最常见的单位了.不过现在如今的大多数网站已经开始用rem这个单位了.那么这四个单位有什么区别呢? px|pt|em|r ...

  7. css 百分比 怎么固定正方形_web前端入门到实战:一次搞懂CSS字体单位:px、em、rem和%

    对于绘图和印刷而言,"单位"相当重要,然而在网页排版里,单位也是同样具有重要性,在CSS3普及以来,更支持了一些方便好用的单位(px.em.rem-等),这篇文章将整理这些常用的C ...

  8. Css单位px,rem,em,vw,vh的区别

    Css单位px,rem,em,vw,vh的区别 px 像素 rem 根元素字体大小 应用场景 使用和修改 em 相对于父元素的大小 % 相对长度单位 vw.vh 相对于视口的单位 视口 VW 相对于视 ...

  9. 20、CSS中单位:【px和%】【em和rem】【vw|vh|vmin|vmax】的区别

    CSS中的px 和 % px (pixels) 是固定单位,也可以叫基本单位,代表像素,可以确保元素的大小不受屏幕分辨率的影响. % (percentage) 是相对单位,代表元素大小相对于其父元素或 ...

  10. css中单位px、pt、em和rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...

最新文章

  1. 清除linux缓存命令
  2. if condition 大于_条码打印软件之脚本编程的应用(if语句)
  3. YARN体系学习笔记
  4. 精华阅读第6期|程序猿的世界,你不懂!
  5. 七张图了解Kubernetes内部的架构
  6. 玩转 SpringBoot 2 快速搭建 | IntellJ IDEA篇
  7. 微软sql服务器开机自启,使用 SQL Server 服务启动选项
  8. 你们都会的防抖与节流
  9. 拓端tecdat|R语言中不同类型的聚类方法比较
  10. python爬虫工程师必学app数据抓取实战_另辟蹊径,appium抓取app应用数据了解一下!...
  11. matlab赌徒破产模型转移矩阵,基于matlab的土地利用转移矩阵及土地利用转移空间分布...
  12. vite 框架 打包修改主页名字得方法
  13. 程序员的表达能力 -- 程序员是表达大师! 提高形象思维能力 表达的基本模式 结构化思维能力 成长为优秀的架构师
  14. 使用spilt截取文件名后缀时出现的问题
  15. 自学微信二次开发(1)
  16. C#转换Excel表格中的科学计数法数字
  17. 实战iOS应用从32位升级到64位
  18. libcmt.lib和libcmtd.lib链接库冲突错误的解决方案
  19. weiit—智慧中台,互联网生态体系构建者
  20. Python 终极指南:进阶之路

热门文章

  1. 数据库课程案例——电力公司收费管理系统分析与实践,完整带SQL语句
  2. 趣图:为什么不能及时发布?
  3. 避免重装系统的情况下,修改IDE为ACHI模式(适合修改注册表后更改BIOS依然蓝屏) 2012/1/21
  4. servlet容器以及ioc容器感性认识
  5. JAVA计算机毕业设计影院网上售票系统Mybatis+源码+数据库+lw文档+系统+调试部署
  6. 梦想是用来坚持的,是用来实现的
  7. MacBook Pro突然上不了百度,其它网站正常访问
  8. 8.4 @烤仔建工 | 一起来围观趋于完美的烤仔之家吧!
  9. ESP8266(NODMCU模块)+Arduino IDE连接阿里云物联网实现开关控制与温度传输(小白教程)
  10. Unity 2019.1版功能介绍