前端面试笔记(CSS篇)——px、rem、em、vw、vh有什么区别?

112 阅读2分钟

基本概念

  • px:就是像素pixel的缩写
  • em:相对单位,1em等于当前元素的 1font-size 的大小
  • rem:是CSS3新增的相对单位,1rem等于html的 1font-size的大小
  • vw和vh:是相对单位,1vw是视口宽度1%,1vh是视口高度的1%

什么是视口呢?

注意:视口≠屏幕大小,视口是去掉浏览器的头部和尾部的区域

接下来演示一下各个单位的使用,代码如下

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  *{
    margin: 0;
    padding: 0;
  }
  div{
    width: 200px;
    height: 200px;
    background-color: skyblue;
  }
</style>
<body>
  <div>老实憨厚的笑笑老实憨厚的笑笑老实憨厚的笑笑</div>
</body>
</html>

em

关于px这个我们很常用的这里就不再赘述,我们直接演示em,当我们在div中添加样式

text-indent:4em

由于1em相当于当前元素 1font-size 的大小,所以这里就是缩进4个字的效果

image.png 由于是根据当前元素的font-size进行变化的,所以如果我们把font-size改成20px,即

font-size:20px

image.png

根据em的效果,如果我们把代码改成这样,会出现什么样的效果

div{
    width: 5em;
    height: 200px;
    font-size:20px;
    background-color: skyblue;
  }

由于宽度变成5em,那不出意外这里的效果就会变成宽度为5个字的大小

image.png

rem

根据rem的定义,其跟em的区别就是相对自己和相对html的区别,所以我们改一下代码,如下

html{
    font-size: 40px;
 }
 div{
    width: 5rem;
    height: 200px;
    font-size:20px;
    background-color: skyblue;
  }

由于我们把html的font-size改为40px,div中的width改为5rem,根据上面的原理我们可以推断,此时宽度应该占10个字

image.png

rem通常用在移动端的适配

vw和vh

如果我们将div的宽度和高度分别设为80vw和80vh,即

 div{
    width: 80vw;
    height: 80vh;
    font-size:20px;
    background-color: skyblue;
  }

可以看到此时div的宽和高分别占浏览器视口的80% image.png 因为vw和vh是相对的单位,所以也会跟着视口的大小去相对的变化

扩展知识点——vmax和vmin

vmax:vw和vh中较大的值

vmin:vw和vh中较小的值

如果要使某个元素在手机横屏和竖屏时大小保持一致,可以考虑使用vmax和vmin

注:本笔记初心为帮助自己更好的学习前端,目的在于自学,请多多包涵!