标签:
1 px和em
css 中最常用的度量单位就是px 了,那么em
被定义为相对于当前对象内文本的字体大小。炒个栗子,如果你给body小哥设置了font-size字体大小,那么body小哥的任何子元素的1em就是等于body设置的font-size。
1 <body> 2 <div class="test">Test</div> 3 </body>
1 body { 2 font-size: 14px; 3 } 4 div { 5 font-size: 1.2em; 6 // calculated at 14px * 1.2, or 16.8px 7 }
你看,这里div这娃的字体大小是1.2em。解释来说,就是他从body爹爹那里继承的字体大小(这里是14px)的1.2倍,结果就是16.8px。
但是,如果你用em一层一层级联得定义嵌套元素的字体大小又会花生什么事情呢?在下面这一小段代码里我们应用了和上面一样一样的CSS,每一个div都从它上一级父元素继承了字体大小,并且逐渐得增加。
1 <body> 2 <div> 3 Test <!-- 14 * 1.2 = 16.8px --> 4 <div> 5 Test <!-- 16.8 * 1.2 = 20.16px --> 6 <div> 7 Test <!-- 20.16 * 1.2 = 24.192px --> 8 </div> 9 </div> 10 </div> 11 </body>
最终效果
2.rem
上面的示例中虽然在某些地方这正是我们想要的,但是通常情况下我们还是希望就依赖单一的相对度量单位就好。这时候嘛,我们就可以使用 rem
了。 ‘r’是“root”的缩写,意思就是1rem等于根元素的字体大小;大部分情况下,根元素就是<html>
元素了。
1 html { 2 font-size: 14px; 3 } 4 div { 5 font-size: 1.2rem; 6 }
这样在上面的那三个嵌套的div娃们的字体大小都是 1.2*14px = 16.8px 了。
rem还适用于网格布局
Rems 不仅仅只是在设置字体大小上很方便。再炒个栗子,你可以用基于html根元素字体大小的rem作为整个网格布局或者UI库的大小单位,然后在其他特定的地方用em单位。这样将会给你带来更多的字体大小和伸缩的可控性,
.container { width: 70rem; // 70 * 14px = 980px }
概念上来说,这个方法的思想就是让你的界面根据你的内容进行缩放。但是,这样做并不是对所有的情况都有意义。
3.vh and vw
响应式web设计离不开百分比。但是,CSS百分比并不是所有的问题的最佳解决方案。CSS的宽度是相对于包含它的最近的父元素的宽度的。但是如果你就想用视口(viewpoint)的宽度或者高度,而不是父元素的,那该肿么办? 这就是 vh
和 vw
单位为我们提供的。
1vh
等于1/100的视口高度。栗子:浏览器高度900px, 1 vh
= 900px/100 = 9 px。同理,如果视口宽度为750, 1vw
= 750px/100 = 7.5 px。
可以想象到的,他们有很多很多的用途。比如,我们用很简单的方法只用一行CSS代码就实现同屏幕等高的框。
.slide { height: 100vh; }
假设你要来一个和屏幕同宽的标题,你只要设置这个标题的font-size的单位为vm
,那标题的字体大小就会自动根据浏览器的宽度进行缩放,以达到字体和viewport大小同步的效果,有木有?!
4.vmin and vmax
vh
和 vm
依据于视口的高度和宽度,相对的,vmin
和 vmax
则关于视口高度和宽度两者的最小或者最大值。比如,浏览器的宽度设置为1100px,高度设置为700px, 1vmin
= 1px, 1vmax
= 11px。如果宽度设置为800px,高度设置为1080px, 1vmin
就等于8px, 1vmax
则未10.8px。
标签:
原文地址:http://www.cnblogs.com/love0o/p/5012811.html