第 19 章 CSS 的取值

19.1 长度

长度是对距离的测量。长度由数字和紧随其后的单位组成。如果长度为 0,则单位可以忽略。有些属性还允许负值。

长度可分为相对长度和绝对长度。相对长度指的是相对与其他长度属性而言,相对长度又分为文本相对长度和视图窗口相对长度。

19.1.1 文本相对长度

  1. em 相对于当前对象内文本的字体尺寸
  2. ex 相对于字符“x”的高度。通常为字体高度的一半
  3. ch 数字“0”的宽度
  4. rem 相对于根元素(即 html 元素)font-size 计算值的倍数(小于 12 像素,在 chrome 中按照 12 像素来处理)

em 是常用的相对长度单位,em 的长度会基于元素的字体大小进行计算,最常用的用法是首行缩进两个字符:

text-indent:2em;

上述的例子中,如果元素中的字体大小为 16px,则文本首行缩进的量为 32px。

19.1.2 视图窗口相对长度

  1. vw 相对于视口的宽度。视图窗口被均分为 100 单位的 vw
  2. vh 相对于视口的高度。视图窗口被均分为 100 单位的 vh
  3. vmax 相对于视图窗口的宽度或高度,总是相对于大的那个。视图窗口的宽度或高度被均分为 100 单位的 vmax
  4. vmin 相对于视图窗口的宽度或高度,总是相对于小的那个。视图窗口的宽度或高度被均分为 100 单位的 vmin

19.1.2.1 绝对长度

绝对长度是最简单的长度单位,绝对长度单位有:

  1. cm 厘米
  2. mm 毫米
  3. q 0.25 毫米
  4. in 英寸,1 英寸 = 2.54 厘米
  5. pt 点,1pt = 1/72in
  6. pc 派卡,1pc = 12pt
  7. px 像素,1px = 1/96in

其中经常使用的绝对单位是像素 px。1 英寸相当于 96 个像素,像素虽然是绝对单位,但是在不同的设备,尤其是高密度显示设备和低密度显示设备上的效果并非完全一致。如图所示:

px 与 pt

图 19.1: px 与 pt

px 与 pt 是两个看起来很像、却完全不一样的单位(在某些场合他们是 1:1 的),在很多时候却常常被搞混,或是制作过程根本没有分清楚、导致结果没有很精确。pt 是常见的标示文字尺寸的单位,在绘图以及文书软件等几乎都是使用 pt 作为字体尺寸的单位。px 像素,是屏幕上所显示的最小单位,当制作的内容是供屏幕浏览时,使用 px 可以精确的控制画面上显示效果。但也因为每个屏幕分辨率不同,像素的大小也不固定。在分辨率高的屏幕上,一个像素可能会小到肉眼无法辨识的大小。

pt 与 px 理解起来其实不难,在应用的时候其实也相当单纯,在大部分的情况下适用的一个原则是:当设计的目的是用于供屏幕浏览,则趋向于使用 px 以方便掌握细节;而如果是为了做输出打印的需求,使用 pt 则是较好的选择。因此,在网站前端开发中,人们经常使用的单位是 px,而不是 pt。

19.2 角度

CSS 中,角度的单位有 deg, grad, rad, turn。

  1. deg 度,角度单位,值的范围是 0-360 度,可以是负值。
  2. grad 梯度(Gradians)。一个圆共 400 梯度,90 度就是 100 梯度。
  3. rad 弧度(Radians)。一个圆共 2π 弧度。
  4. turn 圈(Turns)。一个圆共 1 圈。

19.3 时间

时间单位有sms,1s=1000ms。多用于动画设置。

19.4 频率

声音频率有hzkhz

19.5 布局

  1. fr fr用于在一系列长度值中分配剩余空间,如果指定了多个部分,则剩下的空间根据各自的数字按比例分配。(案例
  2. gr gr网格数

19.6 颜色

在 CSS 中,可通过 color 属性为元素指定字体颜色。在 CSS2 中,颜色由三种表示方法:颜色名称、十六进制颜色值和 rgb 函数形式的颜色值。其中颜色名称只能在预设的 16 种颜色名称中选择,这 16 种预设的颜色名称分别是:black、silver、gray、white、maroon、red、purple、fuchsia、green、lime、oliver、yellow、navy、blue、teal、aqua。如:

p {
    color: black;
}

上述规则将使段落的颜色为黑色。

color 属性的值还可以采用 16 进制来表示,如:

p {
    color: #333333;
}

#表示其后的数值为 16 进制,通常情况下是 6 位数字,分别表示 RRGGBB,即红色分量的颜色值、绿色分量的颜色值、蓝色分量的颜色值。如果#RRGGBB分别都由重复数字组成,那么还可以简写成为#RGB

除了使用颜色名称、十六进制之外,颜色值还可以通过 rgb 函数表示,如:

p {
    color: rgb(25%,25%,30%);
}

其中 rbg 函数的三个参数值分别表示的是红色、绿色和蓝色的颜色分量。

在 CSS3 中,还新增了 RGBA, HSL, HSLA 三种颜色表示方法。

RGBA 模式与 RGB 相同,只是在 RGB 模式上新增了 Alpha 透明度。如:

p {
    color: rgba(25%,25%,30%,0.2);
}

最后一个参数值表示颜色的透明程度,0 表示完全透明,1 表示不透明。

HSL 是另外一种常用的颜色表示体系,其中:

  1. H Hue(色调)。0(或 360) 表示红色,120 表示绿色,240 表示蓝色,也可取其他数值来指定颜色。取值为:0 - 360
  2. S Saturation(饱和度)。取值为:0.0% - 100.0%
  3. L Lightness(亮度)。取值为:0.0% - 100.0%

例如:

.task {
  background: hsl(0, 100%, 25%);
}

HSLA 颜色体系,增加了透明度,例如:

.task {
  background: hsla(0, 100%, 25%, .25);
}

19.7 数字

19.7.1

浮点数,值在一定范围内,超过范围无效。

div {
    line-height: 1.5;
}
div {
    opacity: .5;
}

19.7.2

整数,值在一定范围内,超过范围无效。

div {
    z-index: 10;
}

19.7.3

百分比由数字和紧随其后的“%”符号构成。百分比值始终是相对于另外一个值而言的,比如相对于长度。例如:

p { font-size: 10px }
p { line-height: 120% }

上面例子中的line-height值,最终计算出来应该为12px