前端和设计师都要知道的css长度单位(css单位pt)
css的长度单位分为两种,一种为绝对长度,一种为相对长度。日常设计与开发中或多或少都会接触到。前端毕竟是根据设计稿写页面,UI设计师也是按照规范去设计页面。
绝对长度
px
即像素pixel,它是最基础也是最常用的一个长度单位

cm
厘米, 1cm=37.8px
mm
毫米,1mm=3.78px
in
即英尺inch, 1in=2.54cm=96px
pt
即点point,1pt=1/72in=1.33px
pc
即派卡,1pc=12pt=16px,派卡是印刷行业的长度单位
相对长度
em

一个字符大小,字符大小在浏览器中默认为16px
EM特点
-1. em的值并不是固定的;
-2. em会继承父级元素的字体大小。
所以我们在写CSS的时候,需要注意两点:
-1. body选择器中声明Font-size=62.5%;
-2. 将你的原来的px数值除以10,然后换上em作为单位;
-3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
避免1.2 * 1.2= 1.44的现象,比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
rem
rem是CSS3新增的一个相对单位(root em,根em), 相对于根元素HTML的字体大小。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
例如,根元素的字体大小 16px,10rem 将等同于 160px,即 10 x 16 = 160。
简单点说就是根em.
百分比%
百分比是一个相对长度单位,相对于包含块(containing block)的高宽或字体大小
关于包含块(containing block)的概念,不能简单地理解成是父元素。
如果是静态定位和相对定位,包含块一般就是其父元素。
如果是绝对定位的元素,包含块应该是离它最近的 position为非static属性的祖先元素。
如果是固定定位的元素,它的包含块是视口(viewport)
vh
视口高度,默认为视口高度的1%
vw
视口宽度,默认为视口宽度的1%

<div class="left">left</div>
<div class="right">right</div>
<style>
* {
padding: 0;
margin: 0
}
.left {
float: left;
width: 50vw;
height: 20vh;
background-color: orange;
text-align: center;
line-height: 20vh;
font-size: 3rem
}
.right {
float: right;
width: 50vw;
height: 20vh;
background-color: red;
text-align: center;
line-height: 20vh;
font-size: 3rem
}
</style>
vmin
布局视口高度和宽度之中值较小的那个的 1/100
vmax
布局视口高度和宽度之中值较大的那个的 1/100
比如:浏览器高度950px,宽度为1920px, 1 vh = 950px/100 = 9.5 px,1vw = 1920px/100 =19.2 px。
vmax相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax。
vmin相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin。
fr
grid布局中利用的一个长度单位。在gird布局中,我们经常会利用fr来进行计算

<div class="grid"> <div class="column">1</div> <div class="column">2</div> <div class="column">3</div> <div class="column">4</div> <div class="column">5</div> <div class="column">6</div> </div> <style type="text/css"> * { margin: 0px; padding: 0px; } .grid { height:300px; width: 1000px; background: #f1f1f1; margin: 20px auto; overflow: auto; display: grid; grid-template-columns: 100px repeat(5, 1fr); grid-column-gap: 10px; } .column { background: orange; } </style>
当然也有小程序中的rpx,相对屏幕自适应
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
