css权威指南 第四章 值和单位

本章分类讨论css中的值和单位

1.关键字、字符串和其它文本值

关键字

规范中每个属性都可以使用的关键字:inherit、initial、unset
inherit:把属性设为与父元素的同一属性一样的值,显式指定为inherit的属性是有特指度的。
initial:把属性的值设为预定义的初始值
unset:对继承的属性来说,unset和inherit一样;对不继承的属性来说,unset和initial一样。

特殊属性all,只能接收inherit/initial/unset三种值。(有人提议设计一种值revert,表示让元素属性不使用自己编写的样式,而使用其它来源的样式,不过目前还在商讨中)
all表示除了direction和unicode-bidi之外的所有属性。(有的浏览器不支持all属性)

字符串

字符串值中的换行符需要转义,用\A表示。

url

值可以是绝对url,就是路径可以用来在互联网上访问资源的url;也可以是相对url,浏览器会把所在的样式表地址 和 相对路径 拼接起来。

图像

图像值可以是图像的url;也可以是image-set,一系列图像(只有Safari和Chrome等几种浏览器支持);还可以是gradient,渐变图像。关于渐变第9章再细说。

标识符

有些属性接受标识符值,即用户定义的某种标识符。css是区分大小写的,所以大小写不同的标识符是不同的。(类似变量)

2.数字和百分比

整数

取值取到属性值范围之外的话,样式就不会生效,但按照某些属性的定义,值填到范围之外了,会被解读成一个与所填值最接近的、合法的值(这种行为叫clamping)。
除了像z-index这种明确规定了取值范围的属性,一般来说,浏览器接受的整数范围在±2^30。

数字

百分比

百分值始终相对于另一个值(同个元素的另一个属性值,或者父辈元素的属性值等),接受百分数值得属性会定义取值范围,以及百分比是相对什么来计算。

弹性值

数字后面跟着fr,这是栅格布局中用的,表示把布局中的空间分成几等分。

3.距离

长度需要数字和单位来表示。(除了0,此时不需要单位)

绝对长度单位

css中有7中长度单位:英寸(in)、厘米(cm)、毫米(mm)、四分之一毫米(q)、点(pt)、派卡(pc)、像素(px)
其中四分之一毫米q,只有Firefox支持
pt是一个在打印机上使用多年的印刷度量单位,1英寸有72点。
派卡pc也是印刷术语,1派卡等于12点,1英寸有6派卡
像素px,在css中本来定义为:1英寸为96像素,但现实中浏览器一般把设备屏幕上一个点作为一像素。
很难用绝对单位实现现实世界中的度量,浏览器不可能掌握系统中所有影响显示的信息。不过,绝对单位在定义文档的印刷样式时很有用,因为打印机通常使用英寸、派卡和点。打印机会把css样式里的像素换算成点。
css规范建议,如果显示设备的屏幕上,每一英寸包含的显示点(也就是ppi,pixels per inch)与96相差很大,浏览器应该缩放像素度量,使用参考像素。
按照本来的构想,1英寸为96像素,但是现在的设备显示器,比如iPhone的视网膜显示屏已经到了326ppi,iPad显示屏有264ppi。
分辨率单位
为了描述显示器的分辨率,出现了3个新单位:dpi、dpcm、dppx,这些单位只能在媒体查询中使用,如:@media(min-resolution: 500dpi)
dpi:一英寸内有多少个屏幕点
dpcm:一厘米内有多少个屏幕点
dppx:一css的px里有多少个屏幕点
1dppx=96dpi 因为css设计px的时候就是让96px=1英寸,所以一个屏幕的分辨率为一英寸96点,它的分辨率也就是一px一点。

相对长度单位

相对长度是指长度相对其它东西而言的,如屏幕分辨率、视区宽度、用户偏好设置等。
em和ex
1em等于元素的font-size属性。如果设置font-size:1em则字号会设成父元素字号大小。
ex的定义和em有点像,指该元素所用字体和字号下,字母小写x的高度。所以字号相同的情况下,字体不同,ex的大小也会不同。
rem
与em类似,等于所声明的字号的尺寸,区别在于,rem始终相对于根元素(html)。
在支持initial关键字的浏览器中,如果根元素没有设定字号,那么font-size: 1rem相当于font-size: initial
ch
css3新增了一个单位ch,表示进距(advance measure),含义脱胎自印刷行业中的advance width,只是因为网页上有些文字是竖排的不是水平的,所以叫advance measure。一ch等于所用字体中的一个0的宽度加上侧边的距离,也就是一个0的进距。等宽字体的所有字符宽度都是1ch,而非等宽字体就不是。
视区相关单位
css3还新增了4个与视区相关的单位,视区宽度单位vw、视区高度单位vh、视区尺寸最小值单位vmin、视区尺寸最大值单位vmax。它们分别表示浏览器窗口视区宽度的1/100、浏览器窗口视区高度的1/100、vw和vh中的较小值、vw和vh中的较大值。
这些单位是长度单位,因此任何允许使用长度单位的地方都能用。而且它们不是跟主轴绑定的,比如说元素宽度也可用vh来设置,width:25vh。

4.计算值

calc()允许使用的运算符有加减乘除和括号。
长度、频率、时间、角度、百分比、数字都可以进行计算。
限制:
1.加号和减号两侧必须使用相同的单位类型,如5em + 2.7是无效的,而5em + 20px则是有效的。90% - 2em也是可以的,表示父元素宽度的90%减去2em。
2.乘法计算时,其中一个值必须是数字,不带单位的。如2rem * 2rem是无效的。
3.除法计算时,除号右侧必须是数字,不带单位的。
4.加减号两侧要有空格,乘除号两侧则没有限制。
5.规范要求浏览器能支持最多20个算子,超过20可视为无效。

5.属性值

使用attr表达式可以取到属性值
比如attr(id)可以取到元素id属性值。比如content: "["attr(id)"]"就能把元素id属性放在渲染出来,还附带了一对中括号。
注意:有些比较花式的写法浏览器并不支持,比如input {width: attr(maxlength) em;}使用的时候还是要看具体情况

6.颜色

具名颜色
早期css有16个颜色关键字,现在的css规范有148个具名颜色了。

RGB和RGBa颜色
可以用rgb(百分数,百分数,百分数),也可用rgb(整数,整数,整数)整数应在0-255之间取。
百分数和整数不能混用。
超出临界范围的值会被clamping为最近的边界值。
css3增加了RGBa表示法,RGB后面可加个0-1之间的小数表示透明度,例如rgba(255,100,0,0.5)。alpha值只能用小数表示,不能用百分数。
十六进制RGB表示法和十六进制RGBa表示法   略

HSL和HSLa颜色
HSL颜色由Hue色相、Saturation饱和度和Lightness明度表示。

颜色关键字
transparent和currentColor。currentColor表示当前元素的solor属性的计算值。

7.角度

角度的单位是deg(1圆周为360deg)、grad(1圆周为400grad)和rad(1圆周为2Π个rad)

8.时间和频率

时间值的单位是s或ms。视听css中还有频率,单位是Hz赫兹和kHz千赫兹。不过到16年底的时候,对视听css的支持还很有限
不知道书上说的视听css是什么意思。。

9.位置

position的值
不想看了用到了再细看吧。

10.自定义值

到17年底书快写完的时候,css新出了一个叫自定义属性的东西。但它其实相当于创建变量。
定义的时候用两个短杠开头--
调用的时候用var(变量名)来调用
自定义标识符相当于编程当中的宏,并不是真正的变量,而是死板地把字符替换掉。
自定义标识符有作用域,就是说一个变量定义的时候是在什么选择器下定义的,那么它的作用域就在这个选择器能涵盖的范围里。
可以将css变量与calc结合起来,就能定义有规律的样式,还能节省一堆代码量。
自定义属性在2017年才出来,浏览器具体怎么支持它,还要再看情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 1、数字 整数和小数 2、百分数 3、颜色 (1) 命名颜色 CSS2.1中,CSS规范定义了17个颜色名:aqu...
    __越过山丘__阅读 111评论 0 0
  •   DOM 1 级主要定义的是 HTML 和 XML 文档的底层结构。   DOM2 和 DOM3 级则在这个结构...
    霜天晓阅读 1,434评论 1 3
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,826评论 0 6
  • 论CSS常用单位的前世今生 目录: 一、---------------------------浅析CSS的组成 二...
    Marting424阅读 2,824评论 0 3
  • 第一章 F12: element.style 内联样式(可以直接在上面写代码进行简单调试) user agent...
    fastwe阅读 1,495评论 0 0