px 是 CSS 中最经常使用的长度单位,能够用来指定字体大小,元素的宽度、高度、边框、内边距,外边距的大小等等, 它是一个虚拟长度单位,是计算机系统的数字化图像长度单位,若是px要换算成物理长度,须要指定精度DPIcss
px 单位的值必须是整数值html
in - 表示英寸,是一个物理单位,在CSS中被直接映射成为px; 转换的方法是 1in = 96px
浏览器
cm - 表示厘米,在生活中经常使用的单位,一样被映射为 px; 转换方法为 1cm = 37.8px
框架
mm - 表示毫米,与cm相似,转换方法为 1mm = 0.1cm = 3.78px
字体
em 单位的值等于基本元素或父元素的字体大小。 code
例如,若是父元素的字体大小为16px,则全部直接子元素中的1em值将计算为16px。基于基本单元的知识,能够很方便的增大或减少子元素的字体大小。 这里的值不须要是整数。htm
使用em能够轻松地将各类元素的字体大小保持在固定比例。 rem
例如,若是父元素的font-size的值为50px,则将子元素的字体大小设置为2em, 至关于设置为100px。 相似的,将它设置为0.5em将使得子元素的字体大小为25px。文档
另外有一点须要注意:若是想要经过 em 设置当前元素的大小值,而且不是相对于直接父元素,而是相对父元素的父元素或者根元素,就会变得很复杂,由于每一层都要进行计算class
例如:
<div class="parent"> <div class="child1"> <div class="child2"></div> </div> </div>
.parent { font-size: 20px; } .child1 { font-size: 1.5em; } .child2 { font-size: 1.2em; }
那么就须要通过计算: child1的字体大小为 20 x 1.5 = 30px
, 而 child2 的字体大小就等于 20 x 1.5 x 1.2 = 36px
rem 也是一个相对单位,与 em 的不一样点在于rem的长度老是相对于根元素, 而不是像 em 使用级联的方式来计算尺寸。这种单位使用起来就简单不少
一样是上面的例子,不过使用的单位是 rem
<div class="parent"> <div class="child1"> <div class="child2"></div> </div> </div>
.parent { font-size: 20px; } .child1 { font-size: 1.5rem; } .child2 { font-size: 1.2rem; }
那么就须要通过计算: child1的字体大小为 16 x 1.5 = 24px
, 而 child2 的字体大小就等于 16 x 1.2 = 19.2px
; 这里为何是使用 16 来乘而不是 20 呢?这就是由于rem的长度老是相对于根元素, 就是指 html, 而 html文档中默认字体大小为 16px, 所以这里使用 16来计算
可视区相对长度 基于 视图窗口或视口(屏幕上的可视区域或者框架)的宽度和高度。
vh单位与可视区的高度相关。vh的值等于可视区高度的1/100。若是咱们要根据浏览器窗口的高度来调整元素,这个单位是有用的。 例如,若是可视区的高度是400px,则1vh等于4px。 若是可视区高度为800px,则1vh等于8px。
相似的,vw单位与可视区的宽度相关。 所以能够推算1vw的值。 1vw就等于可视区宽度的1/100。 例如,若是窗口的宽度为1200px,则1vw将为12px。
vmin 是当前 vm 和 vh 中较小的一个值,也就是说,是可视区域较小的一边的1/100的长度; 例如:可视区大小为 1000x800, 则 wmin = 800/100 = 8px; 若是可视区大小为 600x800, 则 wmin = 600/100 = 6px;
相似的, wmax 是当前 vm 和 vh 中较大的一个值,也就是说,是可视区域较大的一边的1/100的长度; 例如:可视区大小为 1000x800, 则 wmin = 1000/100 = 10px; 若是可视区大小为 600x800, 则 wmin = 800/100 = 8px;
以百分比为单位的长度值是基于具备相同属性的父元素的长度值。所以会随着父元素对应的长度值得变化而变化。例如:设置父元素的宽度为 100px, 设置直接子元素的宽度为 50%,则子元素的宽度为 50px;