CSS中的单位
em
em被定义为相对于当前对象内文本的字体大小。如果你给body元素设置了一个字体大小,那么body的任何子元素的em值都等于body设置的font-size。
|
|
div中的字体大小是1.2em,也就是div从父类元素继承的字体大小的1.2倍。在这里,body的字体是14px,那么div的字体大小是1.2*14 = 16.8px
但是,如果你用em一层一层级联地定义嵌套元素的字体大小又会发生什么事情呢?
虽然在某些地方这正是我们想要的,但是通常情况下我们还是希望就依赖单一的相对度量单位就好。这时,就因该用rem了,rem中的r代表根元素,它的值就是根元素设置的字体大小。在大多数情况下根元素就是html了。
|
|
这样在上面的那三个嵌套的div的字体大小都是1.2 * 14px = 16.8px了。
适用于网格布局
rem不仅适用于字体大小,也用于网格布局。例如,你可以用基于HTML根元素字体大小的rem作为整个网络布局或者UI库的大小单位,然后在其它特定的地方用em单位。这样将会给你带来更多的字体大小和伸缩的可控性。
|
|
vh和vw
响应式web设计对百分比规则有很大的依赖性。然而,对于每一个问题,css百分比并不是最好的解决方案。CSS宽度是相对于包含它的最近的父元素的宽度的。如果你想使用的是视口的高度与宽度,而不是父元素的,那么vh和vw就能满足需求了。
1vh等于1%的视口高度。例如,浏览器高度是900px,那么1vh = 900* 1% = 9px,同理,若视口宽度是750px,则1vw是7.5px。
它的用途很广泛。比如,我们用很简单的方法只用一行css代码就实现同屏幕等高的框。
假如你要来一个和屏幕同宽的标题,你只要设置这个标题的font-size的单位为vw,那标题的字体大小就会自动根据浏览器的宽度进行缩放,以达到字体和viewport大小同步的效果。
vmin和vmax
vh和vw是相对于视口的宽度和高度,而vmin和vmax则关于视口高度和宽度两者的最小或者最大值。例如,如果浏览器的高宽分别为700px和1100px,则1vmin=7px, 1vmax=11px;如果高宽分别是1080px和800px,则1vmin=8px,1vmax = 10.8px。
那么什么时候需要这些值呢?
假设有一个元素,你需要让他始终在屏幕上可见。只要对其高度和宽度使用vmin单位,并赋予其低于100的值就可以做到。
|
|
如果你要让这个方框始终铺满整个视口的可见区域(四边始终触摸到屏幕的四边):
|
|