em...... em和rem有啥子区别? 来,今儿一下子弄懂了所有单位。

哈喽, CSS世界里面里有各种各样的单位: px、pt、in、pc、cm、em、rem…
是不是看到这里就已经有一点点晕了呢? 因为CSS支持各类单位, 所以才会CSS才会那么多彩缤纷, 但同时也使得CSS更难以被深入掌握。无论哪个单位, 无外乎就两种类型: 绝对单位和相对单位。 下面进入正文, 来看看他们各自的特点以及在何种环境下选择最优的一个。

绝对单位:px

这里只介绍最常用的绝对单位px, 因为其他的绝对单位像pt、pc 和 in 都极少被使用而且它们的性质和px是一样的理解了px 就等同于理解了他们。
px 是我们最常用的单位, 对于大多数新手来说, 他们就只接触了这一种单位。 一个px 就是一个像素点, 但是CSS里面的一个像素不完全等于屏幕的一个像素, 会根据显示器、浏览器或操作系统的不同而有所改变。但是无论如何改变也不会相差太大,尤其对于UI设计师来说, px 是他们设计页面的通用语言, 当你作为一个前端工程师和UI设计师交流的时候就一定要使用px来沟通才能完美还原产品设计。在CSS里面, 所有的相对单位都会先转换为px 然后才被浏览器渲染出来, 所以px 相当于一个重要的桥梁, 通过它你可以直接和UI设计师和浏览器沟通。

相对单位:em, rem, vh, vw, vmin, vmax

相对单位可以说是CSS里面最常用的单位, 因为他们是无比强大的, 所有响应式网站都会用到它。

  1. em: em 基于当前元素的font-size值,如果当前元素的font-size 值没有被设置那么会找到上一级的font-size值, 如果还是没有就会一直往上找直到根元素的font-size。 1 em = 1 font-size, 如果你设置当前font-size 为20px, 那么在这个元素里面1 em = 20px。如果font-size也用em, 那么这里的1em会等同于它父元素的font-size值, 没有的话就依次往上找,然后将它转化为px。
 <p class="part1">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Unde veniam quam dolore ullam assumenda similique?</p>
  <p class="part2">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Unde veniam quam dolore ullam assumenda similique?</p>
:root {
    font-size: 14px;
}

* {
    box-sizing: border-box;
}

p{
    border: blue solid 1px;
    padding: 1.2em;
    border-radius: .6em;
    margin: auto;
    width: 600px;
}

.part1 {
    font-size: 1em;
}

.part2 {
    font-size: 20px;
    margin-top: 16px;
}

在这里插入图片描述
在这里, 我们只需要一行代码去改变第二个p标签的font-size就同时改变了它的padding值和border-radius值。在第二个p标签当中,对于padding: 1.2 X 20 = 24px; 对于 border-radius: 0.6 X 20 = 12 px;而对于第一个, 先计算他的font-size值, font-size = 1 X 14 = 14px, padding = 1.2 X 14 = 16.8px, border-radius = 0.6 X 14 = 8.4 px;相当于放大的用来的 20/14 倍。

  1. rem: rem 基于根的font-size值, 其余的用法和em一模一样。
:root {
    font-size: 14px;
}

* {
    box-sizing: border-box;
}

p{
    border: blue solid 1px;
    padding: 1.2rem;
    border-radius: .6rem;
    margin: auto;
    width: 600px;
}

.part1 {
    font-size: inherit;
}

.part2 {
    font-size: 20px;
    margin-top: 16px;
}

在这里插入图片描述
在这里, 第一个没有变, 但是计算过程却不一样了,因为不用先计算自己font-size 值, 所以padding = 1.2 X 14 = 16.8px, border-radius = 0.6 X 14 = 8.4 px;
第二个和第一个也是一样的, 它没有放大时因为它只与根部的font-size值有关而与本身的font-size值无关。

  1. vh, vw, vmin, vmax:
    1 vh = 1/100 窗口高度;
    1 vw = 1/100 窗口宽度;
    1 vmin = 1/100 窗口高度和宽度中较小的一个;
    1 vmax = 1/100 窗口过度的宽度中较大的一个;

总结:

CSS单位分为绝对单位和相对单位, 所有相对单位会先转换成绝对单位px然后才被浏览器渲染;
em 和 rem 都是基于font-size的相对单位, 但是em是基于当前元素的font-size, 而rem仅仅只与根部也就是 :root { font-size : 14px } 有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值