在CSS,很多属性都依赖于长度度量来合适的显示各种页面元素,因此CSS中也有很多长度单位也不足为奇。
那么问题来了:说说你知道CSS长度单位?px、em、rem……
下面我们就来看看CSS长度单位
px: 像素
in: 英寸
mm: 毫米
q: 1/4毫米
cm: 厘米
pt: 磅
pc: 派卡
%: 百分比
em: 根据文档字体计算尺寸
rem: root em根据根文档字体计算尺寸
ex: 文档字符”的高度
ch: 文档数字0的的宽度
vh: 视口高度的 1/100
vw: 视口宽度的 1/100
vmin: 视口高度和宽度之间的最小值的 1/100
vmax: 视口高度和宽度之间的最大值的 1/100
绝对长度单位
px
与显示设备相关。对于屏幕显示,通常是一个设备像素(点)的显示。
p { font-size: 10px; }
in
英寸(2.54厘米,96px) 1in 总是等于96px
p {
font-size: 1in; // 96px
}
mm 毫米 25.4mm 总是等于96px
p {
font-size: 25.4mm; //96px
}
q 1q = 1/4mm
p {
font-size: 101.6q; //96px
}
cm 厘米(10毫米)1cm == 37.8px
p {
font-size: 1cm; // 96/25.4*10 px
}
pt磅 印刷单位(1/72 英寸)3pt 总是等于4px
p {
font-size: 3pt; // 4px
}
pc 印刷单位 1pc = 12pt
p {
font-size: 1pt; // 12/3*4px
}
来看看绝对单位间的相互转换:
1in = 2.54cm = 25.4 mm = 101.6q = 72pt = 6pc = 96px
相对长度单位
% 百分比相对于父元素
<div class="parent">
<div class="children"></div>
</div>
<style>
.parent {
width: 960px;
}
.children {
width: 10%; //96px
}
</style>
em 和 rem (root em)
两者都是基于字体尺寸的,区别在于 em 是相对于当前父元素的字体大小为标准,而 rem 是相对于 html 元素的字体大小为标准。
<body> <div class="em"> Test <!-- 10 * 1.2 = 12px --> <div class="em"> Test <!-- 12 * 1.2 = 14.4px --> <div class="em"> Test <!-- 14.4 * 1.2 = 17.28px --> </div> </div> </div> <div class="rem"> Test <!-- 10 * 1.2 = 12px --> <div class="rem"> Test <!-- 10 * 1.2 = 12px --> <div class="rem"> Test <!-- 10 * 1.2 = 12px --> </div> </div> </div> </body> <style> html,body { font-size: 10px; } div.em { font-size: 1.2em; } div.rem { font-size: 1.2rem; } </style>
ex
这个单位表示元素font的 x-height ,即字符“x”的高度。对于很多字体, 1ex ≈ 0.5em
ch
指当前字体环境中数字 0
的宽度。
vh
和 vw
vh
等于视窗高度的 1/100 同理, vw
等于视窗宽度 1/100
<!-- 假设屏幕宽度为375px 高度为667px -->
<body>
<div class="element"></div>
<div class="full-height"></div>
</body>
<style>
.element {
width: 50vw; // 187.5px
height: 80vh; // 533.6px
}
.full-height {
height: 100vh;
/* height: 667px */
}
</style>
vmin 和 vmax这两个单位是针对vw和vh。 vmin 是 vw和 vh中比较 小 的值, vmax 是 vw和 vh中比较 大 的值
<!-- 假设屏幕宽度为375px 高度为667px -->
<body>
<div class="box"></div>
</body>
<style>
.box{
height: 1vmin; //375/100=3.75px
width: 1vmin;
}
.box{
height: 1vmax; //667/100=6.67px
width: 1vmax;
}
</style>
假设需要让一个元素始终在屏幕上可见:
.box {
height: 100vmin;
width: 100vmin;
}
假设需要让这个元素始终铺满整个视口的可见区域:
.box { height: 100vmax; width: 100vmax;}
总结
尺寸单位不是很难,但是看完这么多单位,你的内心一定是崩溃的,可见CSS真不简单。但是在实际生产中我们及常用到的还是px、em、rem、%,同时vh、vw也是相当好用的。