I am the dialog's content
10 | 11 || ` 19 | - `table-row-group` 对应` |
| City | 122 |Population | 123 |
|---|---|
| Sydney | 127 |4.627 million (2018) | 128 |
`标签之中。
71 |
72 | ```css
73 | pre {-moz-tab-size: 16;} /* Code for Firefox */
74 | pre {-o-tab-size: 16;} /* Code for Opera 10.6-12.1 */
75 | pre {tab-size: 16;}
76 | ```
77 |
78 | ## word-wrap
79 |
80 | `word-wrap`的正式名称是`overflow-wrap`,用于规定是否可以在一个词内部断行,避免溢出容器。
81 |
82 | 它可以取两个值。
83 |
84 | - normal:只在可以断行的地方断行。
85 | - break-word:可以在任意点断行,避免某个词过长,发生溢出。
86 |
87 | ## word-break
88 |
89 | `word-break`用于规定是否可以在词内断行。
90 |
91 | 它可以取三个值。
92 |
93 | - normal:使用浏览器默认的断行规则
94 | - break-all:对于非 CJK 字符,可以任意字符之间断行。
95 | - keep-all:对于 CJK 字符不允许换行。非 CJK 字符与`normal`相同。
96 |
97 | ## hyphens
98 |
99 | 浏览器打开连字号功能,需要两个步骤。第一个步骤是设置文本的语言。这将告诉浏览器使用哪个连字词典,正确的自动连字需要一个适合文本语言的连字词典。如果浏览器不知道文本的语言,即使打开 CSS 设置也不会自动连词。
100 |
101 | 设置网页语言,应该使用``标签的`lang`属性。
102 |
103 | ```html
104 |
105 | ```
106 |
107 | CSS 里面使用自动连词,要开启`hyphens`属性。`hyphens`属性控制块级元素之中,文本是否显示连词线。
108 |
109 | ```css
110 | hyphens: auto;
111 | ```
112 |
113 | `hyphens`属性可以取以下三个值。
114 |
115 | (1) none
116 |
117 | `none`表示一个词不会在断行处被拆开,即断行处不会有连词线。
118 |
119 | (2)manual
120 |
121 | `manual`表示只有在一个词内部的字符表示可以有连词线时,才会在断行处拆开。断行处,会有连词线。
122 |
123 | 两个字符可以表示此处可以断行,并显示连词线,一个是`-`(U+2010),表示此处可以有一个可见的断行,即使不在此处断行,这里也会有连词线显示;另一个是`U+00AD`,表示不可见的断行,HTML 文档里面可以用``插入。
124 |
125 | (3)auto
126 |
127 | `auto`表示浏览器决定一个词是否可以在断行处拆开,以及是否会有连词线。
128 |
129 | ## 参考链接
130 |
131 | - [All you need to know about hyphenation in CSS](http://clagnut.com/blog/2395), Richard Rutter
132 |
--------------------------------------------------------------------------------
/docs/feature/counter.md:
--------------------------------------------------------------------------------
1 | # CSS 计数器
2 |
3 | ## 简介
4 |
5 | - counter-reset:新建或重置一个计数器。
6 | - counter-increment:指定计数器的值加1。
7 | - counter():取出指定计数器的值。
8 |
9 | ```css
10 | counter-reset:counterName;
11 | counter-increment: counterName;
12 | counter(counterName);
13 | ```
14 |
15 | 下面是一个例子。
16 |
17 | ```css
18 | ul{
19 | counter-reset: section;
20 | }
21 | li{
22 | list-style-type: none;
23 | counter-increment: section;
24 | }
25 | li:before{
26 | content: counters(section, '-') '.';
27 | }
28 | ```
29 |
30 | ## counter-reset
31 |
32 | `counter-reset`属性新建或重置计数器。计数器的值默认为`0`。
33 |
34 | 可以使用第二个参数,修改计数器的默认值。
35 |
36 | ```css
37 | counter-reset: count -1;
38 | ```
39 |
40 | 上面示例将计数器的默认值设为`-1`。
41 |
42 | 可以在一条语句里面,同时新建多个计数器。
43 |
44 | ```css
45 | counter-reset: counter1 1 counter2 4;
46 | counter-reset: chapter section 1 page;
47 | ```
48 |
49 | 上面示例,第一行新建了两个计数器,第二行新建了三个计数器,并且计数器`section`的默认值设为`1`。
50 |
51 | 如果这个属性的值设为`none`,则表示不重置计数器,可以用来取消上层规则的设置。
52 |
53 | ## counter-increment
54 |
55 | `counter-increment`属性默认将计数器的值加`1`,但也可以使用第二个值,指定变化的幅度。
56 |
57 | ```css
58 | counter-increment: counter-name -1;
59 | ```
60 |
61 | 上面示例表示将计数器的值减`1`。
62 |
63 | 可以在一条`counter-increment`语句里面,同时改变多个计数器。
64 |
65 | ```css
66 | counter-increment: counter1 1 counter2 -4;
67 |
68 | counter-increment: chapter section 2 page;
69 | ```
70 |
71 | 上面示例的第一行,计数器`counter1`增加`1`,计数器`counter2`减去`4`。第二行,计数器`chapter`和`page`增加`1`,计数器`section`增加2。
72 |
73 | 如果这个属性设为`none`,表示不改变计数器的值。
74 |
75 | ## counter()
76 |
77 | `counter()`还有可选的第二个参数,设置计数器的值样式,默认是阿拉伯数字。
78 |
79 | ```css
80 | counter(countername, upper-roman);
81 | ```
82 |
83 | 上面示例将计数器的值样式设为大写的罗马数字。
84 |
85 | 常用的样式值如下。
86 |
87 | - decimal-leading-zero:数字带有前导0。
88 | - lower-roman:小写的罗马数字。
89 | - upper-roman:大写的罗马数字。
90 | - lower-alpha:小写的英文字母。
91 | - upper-alpha:大写的英文字母。
92 |
93 | 也可以使用`@counter-style`定义自己的规则。
94 |
95 | ```css
96 | @counter-style winners-list {
97 | system: fixed;
98 | symbols: url(gold-medal.svg) url(silver-medal.svg) url(bronze-medal.svg);
99 | suffix: " ";
100 | }
101 | ```
102 |
103 | 上面示例是金牌、银牌、铜牌的计数符号。
104 |
105 | ```css
106 | @counter-style thumbs {
107 | system: cyclic;
108 | symbols: "\1F44D";
109 | suffix: " ";
110 | }
111 |
112 | ul {
113 | list-style: thumbs;
114 | }
115 | ```
116 |
117 | 上面示例是将列表符号变成点赞。
118 |
119 | ```css
120 | @counter-style circled-alpha {
121 | system: fixed;
122 | symbols: Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ;
123 | suffix: " ";
124 | }
125 |
126 | .items {
127 | list-style: circled-alpha;
128 | }
129 | ```
130 |
131 | 上面示例将列表符号变成带圈的英文字母。
132 |
133 | ## counters()
134 |
135 | `counters()`用来取出计数器的值,并且指定多重计数器之间的连接字符。
136 |
137 | ```css
138 | counters(name, strings, style);
139 | ```
140 |
141 | 它与`counter()`的不同是多了一个`strings`参数,表示子序号的连接字符串。
142 |
143 | ```css
144 | counters(countername, '-');
145 | counters(countername, '.', upper-roman);
146 | ```
147 |
148 | 上面示例第一行中,计数器与子计数器的连接符号为`-`。第二行为小数点。
149 |
--------------------------------------------------------------------------------
/docs/text/white-space.md:
--------------------------------------------------------------------------------
1 | # 空格
2 |
3 | ## 一、基本规则
4 |
5 | HTML 代码的空格通常会被浏览器忽略。
6 |
7 | 
8 |
9 | ```html
10 | ◡◡hello◡◡world◡◡
11 | ```
12 |
13 | 上面是一行 HTML 代码,文字的前部、内部和后部各有两个空格。为了便于识别,这里使用半圆形符号`◡`表示空格。
14 |
15 | 浏览器的输出结果如下。
16 |
17 | ```html
18 | hello world
19 | ```
20 |
21 | 可以看到,文字的前部和后部的空格都会忽略,内部的连续空格只会算作一个。这就是浏览器处理空格的基本规则。
22 |
23 | 如果希望空格原样输出,可以使用``标签。
24 |
25 | ```html
26 | ◡◡hello◡◡world◡◡
27 | ```
28 |
29 | 另一种方法是,改用 HTML 实体` `表示空格。
30 |
31 | ```html
32 | hello world
33 | ```
34 |
35 | ## 二、空格字符
36 |
37 | HTML 处理空格的规则,适用于多种字符。除了普通的空格键,还包括制表符(`\t`)和换行符(`\r`和`\n`)。
38 |
39 | 浏览器会自动把这些符号转成普通的空格键。
40 |
41 | ```html
42 | hello
43 | world
44 | ```
45 |
46 | 上面代码中,文本内部包含了一个换行符,浏览器视同为空格,输出结果如下。
47 |
48 | ```html
49 | hello world
50 | ```
51 |
52 | 所以,文本内部的换行是无效的(除非文本放在``标签内)。
53 |
54 | ```html
55 | hello
world
56 | ```
57 |
58 | 上面代码使用`
`标签显式表示换行。
59 |
60 | ## 三、CSS 的 white-space 属性
61 |
62 | HTML 语言的空格处理,基本上就是直接过滤。这样的处理过于粗糙,完全忽视了原始文本内部的空格可能是有意义的。
63 |
64 | CSS 提供了一个 white-space 属性,可以提供更精确一点的空格处理方式。该属性共有六个值,除了一个通用的`inherit`(继承父元素),下面依次介绍剩下的五个值。
65 |
66 | ### 3.1 white-space: normal
67 |
68 | `white-space`属性的默认值为`normal`,表示浏览器以正常方式处理空格。
69 |
70 | ```html
71 | ◡◡hellohellohello◡hello
72 | world
73 |
74 | ```
75 |
76 | 上面代码中,文本前部有两个空格,内部有一个长单词和一个换行符。
77 |
78 | 然后,容器``指定一个比较小的宽度。为了便于识别,背景色设为红色。
79 |
80 | ```css
81 | p {
82 | width: 100px;
83 | background: red;
84 | }
85 | ```
86 |
87 | 显示效果如下图。
88 |
89 | 
90 |
91 | 可以看到,文首的空格被忽略。由于容器太窄,第一个单词溢出容器,然后在后面一个空格处换行。文本内部的换行符自动转成了空格。
92 |
93 | ### 3.2 white-space: nowrap
94 |
95 | `white-space`属性为`nowrap`时,不会因为超出容器宽度而发生换行。
96 |
97 | ```css
98 | p {
99 | white-space: nowrap;
100 | }
101 | ```
102 |
103 | 显示效果如下图。
104 |
105 | 
106 |
107 | 所有文本显示为一行,不会换行。
108 |
109 | ### 3.3 white-space: pre
110 |
111 | `white-space`属性为`pre`时,就按照`
`标签的方式处理。
112 |
113 | ```css
114 | p {
115 | white-space: pre;
116 | }
117 | ```
118 |
119 | 显示效果如下图。
120 |
121 | 
122 |
123 | 上面结果与原始文本完全一致,所有空格和换行符都保留了。
124 |
125 | ### 3.4 white-space: pre-wrap
126 |
127 | `white-space`属性为`pre-wrap`时,基本还是按照``标签的方式处理,唯一区别是超出容器宽度时,会发生换行。
128 |
129 | ```css
130 | p {
131 | white-space: pre-wrap;
132 | }
133 | ```
134 |
135 | 显示效果如下图。
136 |
137 | 
138 |
139 | 文首的空格、内部的空格和换行符都保留了,超出容器的地方发生了折行。
140 |
141 | ### 3.5 white-space: pre-line
142 |
143 | `white-space`属性为`pre-line`时,意为保留换行符。除了换行符会原样输出,其他都与`white-space:normal`规则一致。
144 |
145 | ```css
146 | p {
147 | white-space: pre-line;
148 | }
149 | ```
150 |
151 | 显示效果如下图。
152 |
153 | 
154 |
155 | 除了文本内部的换行符没有转成空格,其他都与`normal`的处理规则一致。这对于诗歌类型的文本很有用。
156 |
157 | ## 四、参考链接
158 |
159 | - [When does white space matter in HTML?](https://medium.com/@patrickbrosset/when-does-white-space-matter-in-html-b90e8a7cdd33),by Patrick Brosset
160 | - [white-space](https://css-tricks.com/almanac/properties/w/whitespace/),by Sara Cope
161 |
162 |
--------------------------------------------------------------------------------
/docs/font.md:
--------------------------------------------------------------------------------
1 | # 字体
2 |
3 | ## 字体文件类型
4 |
5 | 内嵌OpenType(Embedded OpenType,.eot)。在使用@font-face时,Internet Explorer 8及之前的版本仅支持内嵌OpenType。内嵌OpenType是Microsoft的一项专有格式,它使用数字版权管理技术防止在未经许可的情况下使用字体。
6 |
7 | TrueType(.ttf)和OpenType(.otf),台式机使用的标准字体文件类型。TrueType和OpenType得到了Mozilla Firefox(3.5及之后的版本)、Opera(10及之后的版本)、Safari(3.1及之后的版本)、Mobile Safari(iOS 4.2及之后的版本)、Google Chrome(4.0及之后的版本)及Internet Explorer(9及之后的版本)的广泛支持。这些格式不使用数字版权管理。
8 |
9 | Web开放字体格式(Web Open Font Format,.woff)。这种较新的标准是专为Web字体设计的。Web开放字体格式的字体是经压缩的TrueType字体或OpenType字体。WOFF格式还允许在文件上附加额外的元数据。字体设计人员或厂商可以利用这些元数据,在原字体信息的基础上,添加额外的许可证或其他信息。这些元数据不会以任何方式影响字体的表现,但经用户请求,这些元数据可以呈现出来。Mozilla Firefox(3.6及之后的版本)、Opera(11.1及之后的版本)、Safari(5.1及之后的版本)、Google Chrome(6.0及之后的版本)及Internet Explorer(9及之后的版本)均支持Web开放字体格式。
10 |
11 | 可缩放矢量图形(Scalable Vector Graphics,.svg)。简言之,应避免对Web字体文件使用SVG。它更多地用于早期Web字体,因为它是iOS 4.1上移动Safari唯一支持的格式(还有可能引起一些崩溃的情况)。从iOS 4.2(于2011年初即被广泛使用)起,移动Safari开始支持TrueType。
12 |
13 | ## font-size
14 |
15 | `font-size`属性用于设置网页的字体大小。
16 |
17 | 下面是设置网页根字体大小的例子。
18 |
19 | ```css
20 | :root {
21 | font-size: 16px;
22 | }
23 |
24 | /* 也可以针对 html 元素设置
25 | html {
26 | font-size: 16px;
27 | }
28 | ```
29 |
30 | 然后,每个一级区块的`font-size`采用`rem`单位,内部属性使用`em`单位。这时,`em`的大小是基于`rem`设置的。
31 |
32 | ```css
33 | button {
34 | font-size: 0.875rem;
35 | // All the internal/external value use in 'em'
36 | // This value use of your "font-size" as the basic font size
37 | // And you will not have any problem with the font size of the container ( Example bottom )
38 | padding: .5em 1em;
39 | border: .125em solid #e3e3e3;
40 | @media (min-width: 48rem){ // min-width: 768px
41 | font-size: 1.125rem;
42 | }
43 | @media (min-width: 62rem){ // min-width: 992px
44 | font-size: 1.375rem;
45 | }
46 | }
47 | ```
48 |
49 | ## font-smoothing
50 |
51 | `font-smooth`属性主要用于控制浏览器对字体的渲染。比如,下面的设置可以减少字体渲染出现锯齿。
52 |
53 | ```css
54 | body {
55 | -webkit-font-smoothing: antialiased;
56 | -moz-osx-font-smoothing: grayscale;
57 | }
58 | ```
59 |
60 | ## font-display
61 |
62 | 有时,样式表指定的字体需要下载(称为 web font),`font-display`属性用于控制浏览器在下载字体时的渲染行为。
63 |
64 | ```css
65 | @font-face {
66 | font-family: 'my-font';
67 | font-display: optional;
68 | src: url(my-font.woff2) format('woff2');
69 | }
70 | ```
71 |
72 | 这里需要理解,浏览器对于下载字体的处理过程。
73 |
74 | 首先,浏览器发现样式表指定的字体,是一种需要下载的字体,会去检查缓存里面是否存在这种字体,如果不存在就开始从网上下载。这时,网页上使用这种字体的文字,会显示不出来,而展现一片空白。这段时间称为”阻塞期“(block),每种浏览器的”阻塞期“时间长度不尽相同,Chrome、Firefox 和 Safari 都是3秒,即文字会有3秒钟显示不出来,而 IE 是0秒,即没有阻塞期。
75 |
76 | 然后,阻塞期结束,如果字体已经下载完成,浏览器就会采用下载的字体进行渲染,文字就会显示出来。如果下载还没有结束,浏览器就会采用替代字体进行渲染,文字也会显示出来,但是与最终状态不一样,这段时间称为”替换期“(swap)。此时,浏览器其实还在下载字体。
77 |
78 | 最后,等到字体下载成功,这时浏览器会用下载的字体,替换现有的字体,这时网页会一闪。如果字体下载失败了,这时浏览器就会继续使用现有的字体,因此网页不会发生变化。
79 |
80 | `font-display`可以取以下值。
81 |
82 | (1)`font-display: block`
83 |
84 | 这是浏览器的默认行为,即打开阻塞期。
85 |
86 | (2)`font-display: swap`
87 |
88 | 这个值会关闭阻塞期,直接进入替换期,即浏览器不会出现文字显示不出来的情况。
89 |
90 | (3)`font-display: fallback`
91 |
92 | 这个值设置阻塞期的长度是100毫秒,即文字有100毫秒显示不出来,然后立即进入替换期。等到字体下载结束,再使用下载的字体渲染。
93 |
94 | (4)`font-display: optional`
95 |
96 | 这个值设置阻塞期也是100毫秒。然后,等到100毫秒结束,浏览器发现字体已经下载完成,就使用下载的字体渲染,否则就不再下载,永久性使用替代字体渲染。它主要用于网速较慢的环境,不让用户长时间等到字体下载。
97 |
98 | 一般来说,正常情况下都推荐使用`font-display:optional`。如果是图标字体等没有替代字体的情况下,可以使用`font-display: block`。
99 |
100 | ## 参考链接
101 |
102 | - [Font-display](https://font-display.glitch.me/), by Monica Dinculescu
103 |
--------------------------------------------------------------------------------
/docs/intro.md:
--------------------------------------------------------------------------------
1 | # CSS 概述
2 |
3 | ## 简介
4 |
5 | CSS 用于定义网页的样式,比如每个网页元素的位置、大小、颜色等等。
6 |
7 | CSS 随着网页的诞生而诞生。1996年12月,CSS 1.0 标准问世,目前广泛使用的是2000年4月发布的 CSS 3 标准。
8 |
9 | CSS 3 采用模块化结构,每个模块都是独立定义的,定义完成以后,再加入 CSS 标准。截止2017年,CSS 共有88个模块,下面是其中一次主要模块。
10 |
11 | > - Display
12 | > - Box alignment
13 | > - Flexible box
14 | > - CSS Grid
15 | > - Inline Layout
16 | > - Position Layout
17 | > - CSS Shapes
18 | > - CSS Transforms
19 |
20 | CSS 样式表就是一个文本文件,定义每个网页元素的样式规则。
21 |
22 | ## 样式规则
23 |
24 | CSS 样式表由大量样式规则组成。每条样式规则分成两个部分:选择器(selector)和声明块(declaration block)。
25 |
26 | 选择器指明本条规则对哪些网页元素生效,声明块描述样式规则的具体内容。
27 |
28 | ```css
29 | h1 {
30 | color: red;
31 | }
32 | ```
33 |
34 | 上面代码是一条样式规则,其中`h1`是选择器,大括号的部分就是声明块。这个规则的意思是,`h1`元素的颜色为红色。
35 |
36 | 声明块的内容,放在一对大括号里面。大括号之中是一个或多个键值对,每个键值对用分号结尾,给出一条样式描述。键值对的顺序并不重要。
37 |
38 | ```css
39 | h1 {
40 | background-color: yellow;
41 | color: red;
42 | }
43 | ```
44 |
45 | 上面代码中,声明块里面包含两条样式描述,它们的顺序不重要,完全可以对调位置。
46 |
47 | 声明块可以写成多行,也可以写成一行。缩进和换行只是为了增加可读性,CSS 引擎会忽略它们。
48 |
49 | ```css
50 | h1 { color: red; }
51 | ```
52 |
53 | 上面代码中,声明块写成了一行。它与写成多行的效果是一样的。
54 |
55 | CSS 允许重复声明某个样式,这时最后声明的键值对会覆盖前面的键值对。
56 |
57 | ```css
58 | h1 {
59 | color: red;
60 | color: black;
61 | }
62 | ```
63 |
64 | 上面代码中,颜色属性申明了两次。后面声明的黑色,会覆盖前面声明的红色。
65 |
66 | 声明块里面的键值对,由键名和键值组成。键名称为 CSS 属性(property),由 CSS 标准给出,键值是该属性允许被赋予的一个值。
67 |
68 | 学习 CSS,主要就是学习各种各样的 CSS 属性。
69 |
70 | ## CSS 注释
71 |
72 | CSS 使用`/* ... */`表示注释,可以是单行,也可以是多行。
73 |
74 | ```css
75 | h1 { /* 这是单行注释 */
76 | color: red;
77 | }
78 |
79 | /* 这是多行注释
80 | h1 {
81 | color: red;
82 | }
83 | */
84 | ```
85 |
86 | 上面代码中,多行注释包含整个`h1`的样式规则,这意味着这个样式规则不会生效。
87 |
88 | 注意:注释不能嵌套。
89 |
90 | ## CSS 的继承
91 |
92 | 某些 CSS 属性不仅影响网页元素本身,还会影响该元素的后代元素,这称为 CSS 的继承。
93 |
94 | 最典型的例子就是字体属性`font-family`,网页根元素`html`设置了字体以后,该网页的所有元素都会默认使用指定的字体。
95 |
96 | 以下是常见的可以继承的 CSS 属性。
97 |
98 | > 文本
99 | > - color(颜色,a元素除外)
100 | > - direction(方向)
101 | > - font(字体)
102 | > - font-family(字体系列)
103 | > - font-size(字体大小)
104 | > - font-style(用于设置斜体)
105 | > - font-variant(用于设置小型大写字母)
106 | > - font-weight(用于设置粗体)
107 | > - letter-spacing(字母间距)
108 | > - line-height(行高)
109 | > - text-align(用于设置对齐方式)
110 | > - text-indent(用于设置首行缩进)
111 | > - text-transform(用于修改大小写)
112 | > - visibility(可见性)
113 | > - white-space(用于指定如何处理空格)
114 | > - word-spacing(字间距)
115 | >
116 | > 列表
117 | > - list-style(列表样式)
118 | > - list-style-image(用于为列表指定定制的标记)
119 | > - list-style-position(用于确定列表标记的位置)
120 | > - list-style-type(用于设置列表的标记)
121 | >
122 | > 表格
123 | > - border-collapse(用于控制表格相邻单元格的边框是否合并为单一边框)
124 | > - border-spacing(用于指定表格边框之间的空隙大小)
125 | > - caption-side(用于设置表格标题的位置)
126 | > - empty-cells(用于设置是否显示表格中的空单元格)
127 | >
128 | > 页面设置(对于印刷物)
129 | > - orphans(用于设置当元素内部发生分页时在页面底部需要保留的最少行数)
130 | > - page-break-inside(用于设置元素内部的分页方式)
131 | > - widows(用于设置当元素内部发生分页时在页面顶部需要保留的最少行数)
132 | >
133 | > 其他
134 | > - cursor(鼠标指针)
135 | > - quotes(用于指定引号样式)
136 |
137 | ## 样式的优先级
138 |
139 | 如果多条规则都对同一个网页元素指定样式,只要 CSS 属性不发生冲突,那么这些规则都是有效的。
140 |
141 | 如果 CSS 属性发生冲突,那就存在一个优先级的问题:哪一条规则优先生效?
142 |
143 | CSS 采用以下规则,决定样式规则的优先级。
144 |
145 | - 特殊性(specificity)
146 | - 顺序(order)
147 | - 重要性(importance)
148 |
149 | 特殊性指的是选择器的具体程度,选择器越特殊,规则就越强。遇到冲突时,优先应用特殊性强的规则。特殊性最低的是元素名本身,然后是元素的`class`属性,特殊性最高的是`id`属性。建议在样式表中多使用`class`选择器,避免使用`id`选择器,这样的灵活性最好。
150 |
151 | 规则指的是,同样特殊性的规则,晚出现的优先级高。
152 |
153 | 重要性指的是,特别注明某条规则的重要程度要比其他所有规则高,方法是在声明的末尾加上`!important`。由于可维护性很差,一旦出现问题,很难排查,除非是殊情况,否则不推荐使用这种方法。
154 |
155 | ```html
156 | p {
157 | color: orange !important;
158 | }
159 | ```
160 |
161 | ## 样式表嵌入网页的方法
162 |
163 | HTML 网页采用``标签将 CSS 样式表嵌入网页。
164 |
165 | ```html
166 |
167 |
168 |
169 |
170 | Demo
171 |
172 |
173 |
174 | ... ...
175 |
176 |
177 | ```
178 |
179 | 上面代码中,``标签放在``内部,`rel="stylesheet"`指明这是样式表,`href`属性给出样式表文件的网址。浏览器解析到这一行代码,就会去加载样式表。
180 |
181 | 上例的样式表文件是`style.css`。样式表的后缀名通常是`.css`,但也可以是其他后缀名。
182 |
183 | 网页也可以使用`
196 |
197 |
198 | ... ...
199 |
200 |
201 | ```
202 |
203 | 上面代码中,``内部的`