美文网首页饥人谷技术博客Web前端之路
几个CSS的单位你需要了解一下

几个CSS的单位你需要了解一下

作者: YM雨蒙 | 来源:发表于2017-08-07 19:15 被阅读183次

css长度单位

css 长度单位一般我们分为绝对长度单位相对长度单位

绝对长度单位

绝对长度单位是一个固定的值,它反应一个真实的物理尺寸。那么,常见的绝对长度单位有哪些呢?

  • in,英寸
  • cm,厘米
  • mm,毫米
  • pt,points
  • pc,Picas

这些单位都是拥有真实的物理尺寸的以及确定的换算关系,比如,1in = 2.54cm。我们平时在书写css代码时,当然也可以直接使用这些单位,并且也能够在屏幕上表现。不过由于这些单位都是绝对长度单位,往往不利于页面屏幕的渲染,这些绝对长度单位更多的使用场景往往是被用在印刷、打印等方向。

相对长度单位

CSS相对长度单位中的相对二字,表明了其长度单位会随着它的参考值的变化而变化,不是固定的。下面是常用的一些相对长度单位:

  • px,Pixels像素
  • em,元素的字体高度
  • ex,x-height,字母x的高度
  • %,百分比
  • ch,字符0的宽度
  • rem,根元素(html)的font-size
  • vw,viewpoint width,视窗宽度,1vw=视窗宽度的1%
  • vh,viewpoint height,视窗高度,1vh=视窗高度的1%
  • vminvmax

今天我们了解几个我们比较常用而且不容易记得几个css的单位:px em rem vw vh vmin vmax

px

px像素单位其实是和设备屏幕的分辨率是直接相关的。

在web开发中,像素现在仍然是典型(主流的)度量单位。当然,你可以在web开发的过程中采用其他的单位,但是往往这些单位在渲染时都被映射换算成像素。是我们最常使用的单位:

header{
    width: 100px;
    height: 100px;
    border: 1px solid #fff;
}
em

em的含义最初是指基于当前字体大写字母”M”的尺寸。所以当改变font-size的大小时,这个长度单位将会发生变化。

现代所有的浏览器中,都会有这样的一个默认值,即1em = 16px,所以即使你忘记了设置font-size也不要紧。

对于em我们需要注意:

基于当前元素的(如果没设置就是继承其父元素的)font-size
<div style="font-size: 12px;">
    <span style="font-size: 2em">em单位</span>
</div>

如上代码中,span标签中设置了font-size: 2em,因为其父标签设置了font-size: 12px,所以span标签的结果就是font-size: 24px

rem

rem单位是相对于字体大小的html元素,也称为根元素。
1rem = 根元素(html 节点)字体大小的倍数。根元素(html)的 font-size:16px

html {
  font-size: 10px; /* 不建议设置 font-size: 62.5%; 在 IE 9-11 上有偏差,具体表现为 1rem = 9.93px。 */
}

.sqaure {
  width: 5rem;  /* 50px */
  height: 5rem; /* 50px */
}

注意 中文版的 Chrome 不支持把font-size 设置到到 12px 以下,因此可以考虑给根元素设置 font-size: 125%

px em rem 转换工具


rem与em的区别:

rem是相对于根元素(html)的字体大小,而em是相对于其父元素的字体大小
em最多取到小数点的后三位

<style>
  html{ font-size: 20px; }
  body{ 
    font-size: 1.4rem;  /* 1rem = 28px */
    padding: 0.7rem;  /* 0.7rem = 14px */
  } 
  div{
    padding: 1em;  /* 1em = 28px */
  }
  span{
    font-size:1rem;  /* 1rem = 20px */
    padding: 0.9em;  /* 1em = 18px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>

在上面的代码中,我们将根元素(html)的字体大小font-size设为20px,
body的字体大小设为1rem,那么转换为像素就是28px(20 × 1.4),
接着我们又将div的padding设为1em,由于其基于父元素,所以转换为像素是28px ( 28 × 1),
然后我们又将span的字体大小设为1rem,也就是20px,由于其自身设置了字体大小,所以padding设为1em,转换为像素是20px(20 × 1),而不是乘以其父元素的字体大小28px(28 × 1)。

注意:当元素自身设置了字体大小,那么如果它的其他css属性也使用em单位,则会基于它自身的字体大小。(就像上面例子的span的padding一样)

基于上面这些原因,个人更倾向于使用rem,因为em使用不当的话,当出现多层继承时,会很容易混淆,比如:
<style>
  html{ font-size: 20px; }
  body{ 
    font-size: 0.9em;  /* 18px */
  } 
  div{
    font-size: 0.8em;  /* 14.4px */
  }
  span{
    font-size: 0.9em;  /*  12.96px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>
使用em时,如果其祖先元素都是用了em,那么就会像上面一样,body继
承其父元素html的字体大小,而div又继承其父元素body的字体大小
,而span又继承其父元素div的字体大小,
最终span的字体大小最终是12.96px(20 × 0.9 ×0.8 × 0.9)。

vw、 vh

vw viewpoint width,视窗宽度,1vw=视窗宽度的1%
vh viewpoint height,视窗高度,1vh=视窗高度的1%

vh等于viewport高度的1/100.例如,如果浏览器的高是900px,1vh求得的值为9px。同理,如果显示窗口宽度为750px,1vw求得的值为7.5px

做一个占满高度的或者接近占满高度的幻灯片,可以用一个非常简单的方法实现,只要用一行CSS:
.cover{
    width: 100vw;
    height: 100vh;
}
vmin、vmax

vminvmax是相对于视口的高度和宽度两者之间的最小值最大值

如果浏览器的高为1100px、宽为700px,那么1vmin就是7px,1vmax就是11px;如果浏览器的高为800px,宽为1080px,那么1vmin也是8px,1vmax也是10.8px。

兼容性

注意: 选择使用什么字体单位主要由你的项目来决定,如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。当然了,最好根据实际应用来使用相应的字体单位


参考博客:

博客来源
W3C
饥人谷
感谢各位所写的博客作为了参考,也使用了部分代码来加深印象,如果有侵权,请联系删除,谢谢

相关文章

  • 几个CSS的单位你需要了解一下

    css长度单位 css 长度单位一般我们分为绝对长度单位和相对长度单位 绝对长度单位 绝对长度单位是一个固定的值,...

  • css单位px、rem、em、vw、vh

    css单位有两种分为相对单位和绝对单位绝对单位有:px相对单位有:rem、em、vw、vh下面我们一起来了解这几个...

  • css3学习--rem终极奥秘解析及css度量单位全解密

    一.css度量单位要想了解rem这个单位的原理以及使用方法,先来了解下css所有的度量单位。很多同学不太清楚的是,...

  • Css单位

    CSS 单位——来自菜鸟教程 CSS 有几个不同的单位用于表示长度。 一些设置 CSS 长度的属性有 width,...

  • 彻底了解CSS中的长度单位

    彻底了解CSS中的长度单位 标签(空格分隔): CSS 我们在写css的时候最常用的长度单位是px(像素),经常看...

  • BFC

    什么是BFC在了解BFC之前,需要了解一下 Box、Formatting Context的概念。 Box: CSS...

  • CSS3 Test: 单位

    平时或许你用过不少css的单位,相对和绝对单位你都用过,这里将会列出所有的。 css单位 css单位:em,ex,...

  • 你不知道的css单位

    要想了解rem这个单位的原理以及使用方法,先来了解下css所有的度量单位。很多同学不太清楚的是,在 CSS 中长度...

  • 截取字符串并补充省略号的两种方法

    css方式(建议使用)用css方式来实现截取字符串并补充省略号: 那么我们来了解一下这几个css属性,为何能实现这...

  • web学习之css基础教程

    一、CSS简介 需要具备的基础知识 在继续学习之前,你需要对下面的知识有基本的了解:HTMLXHTML CSS 概...

网友评论

    本文标题:几个CSS的单位你需要了解一下

    本文链接:https://www.haomeiwen.com/subject/ejralxtx.html