CSS 样式级联
浏览器使用以下顺序查找属性值。
内联样式 - 使用元素上的style全局属性定义的样式
嵌入式样式 - 在样式元素中定义的样式
外部样式 - 使用链接元素导入的样式
用户样式 - 已由用户定义的样式
浏览器样式 - 浏览器应用的默认样式
例如,为一个元素选择文本的颜色。
浏览器将需要为CSS颜色属性找到一个值。
首先,它将检查它试图渲染的元素是否具有定义颜色值的内联样式,如下所示:
<a style="color:red" href="http://www.w3cschool.cn">Visit the website</a>
如果没有内联样式,浏览器将查找包含适用于元素的样式的样式元素,如下所示:
<style type="text/css"> a { color: red; } </style>如果没有这样的样式元素,浏览器会查看通过链接元素加载的样式表。
如果仍然找不到颜色属性,则使用默认的浏览器样式。
注意
属性的前三个来源(内联样式,嵌入样式和样式表)统称为作者样式。
用户样式表中定义的样式称为用户样式,浏览器定义的样式称为浏览器样式。
重要样式
您可以通过将属性值标记为重要来覆盖正常的级联顺序。
通过对声明附加!important
,可以将单个值标记为重要。
<!DOCTYPE HTML> <html> <head> <title>Example</title> <style type="text/css"> a { color: black !important; } </style> </head> <body> <a style="color:red" href="http://www.html.cn">Visit the website</a> <p>This is a text.</p> <a href="http://html.org">Visit the htmlwebsite</a> </body> </html>
你可以看到属性重要性的影响。 color属性的嵌入值将覆盖内联值。
特异性和顺序评估
如果有两个样式应用于在同一级别定义的元素,并且它们都包含浏览器正在寻找的CSS属性的值。
要决定使用哪个值,浏览器会评估每个样式的特异性,并选择最具体的值。
浏览器通过计算三个不同的特征来确定样式的特异性:
样式选择器中的id值的数量
选择器中的其他属性和伪类的数量
选择器中元素名称和伪元素的数量
浏览器合并来自每个评估的值,并应用来自最特定样式的属性值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> a { color: black; } a.myclass { color:white; background:grey; } </style> </head> <body> <a href="http://www.html.cn">Visit the website</a> <p>The is a test.</p> <a class="myclass" href="http://html.org">Visit the htmlwebsite</a> </body> </html>
当评估特异性时,您以a-b-c的形式创建一个数字,其中每个字母是三个特征之一的总和。
只有a值相等,浏览器才会比较b值。
只有当a和b的值相同时,浏览器才会考虑c值。
1-0-0的特异性得分比0-2-2更特异。
在上面的代码中,selector a.myclass包含一个类属性,这意味着样式的特殊性是0-1-0。 0用于id值,1用于其他属性,0用于元素名称。
当呈现已分配给myclass类的元素时,浏览器会为color属性找到一个值。对于所有其他的元素,将使用另一个样式的值。
当在具有相同特定性的样式中定义值时,浏览器根据顺序选择值。
例子
<!DOCTYPE HTML> <html> <head> <style type="text/css"> a.myclass1 { color: black; } a.myclass2 { color:white; background:grey; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a paragraph.</p> <a class="myclass1 myclass2" href="http://html.org">html</a> </body> </html>
继承
如果浏览器找不到一个可用样式中的值,它将使用继承。
继承意味着获取由父元素定义的属性的值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> p { color:white; background:grey; border: medium solid black; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a <span>test</span>.</p> <a href="http://html.org">html</a> </body> </html>
span
元素的父代是 p
元素。
span元素从父p元素继承color属性。
不是所有的CSS属性都是继承的。
只有与外观相关的是继承的,包括文本颜色,字体详细信息等。
与布局相关的不是继承。
inherit关键字
你可以通过使用inherit
在样式中强制继承,
inherit
显式地告诉浏览器对属性使用父元素的值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> p { color:white; background:grey; border: medium solid black; } span { border: inherit; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a <span>test</span> from www.html.cn.</p> <a href="http://html.org">html</a> </body> </html>
浏览器使用以下顺序查找属性值。
内联样式 - 使用元素上的style全局属性定义的样式
嵌入式样式 - 在样式元素中定义的样式
外部样式 - 使用链接元素导入的样式
用户样式 - 已由用户定义的样式
浏览器样式 - 浏览器应用的默认样式
例如,为一个元素选择文本的颜色。
浏览器将需要为CSS颜色属性找到一个值。
首先,它将检查它试图渲染的元素是否具有定义颜色值的内联样式,如下所示:
<a style="color:red" href="http://www.w3cschool.cn">Visit the website</a>
如果没有内联样式,浏览器将查找包含适用于元素的样式的样式元素,如下所示:
<style type="text/css"> a { color: red; } </style>如果没有这样的样式元素,浏览器会查看通过链接元素加载的样式表。
如果仍然找不到颜色属性,则使用默认的浏览器样式。
注意
属性的前三个来源(内联样式,嵌入样式和样式表)统称为作者样式。
用户样式表中定义的样式称为用户样式,浏览器定义的样式称为浏览器样式。
重要样式
您可以通过将属性值标记为重要来覆盖正常的级联顺序。
通过对声明附加!important
,可以将单个值标记为重要。
<!DOCTYPE HTML> <html> <head> <title>Example</title> <style type="text/css"> a { color: black !important; } </style> </head> <body> <a style="color:red" href="http://www.html.cn">Visit the website</a> <p>This is a text.</p> <a href="http://html.org">Visit the htmlwebsite</a> </body> </html>
你可以看到属性重要性的影响。 color属性的嵌入值将覆盖内联值。
特异性和顺序评估
如果有两个样式应用于在同一级别定义的元素,并且它们都包含浏览器正在寻找的CSS属性的值。
要决定使用哪个值,浏览器会评估每个样式的特异性,并选择最具体的值。
浏览器通过计算三个不同的特征来确定样式的特异性:
样式选择器中的id值的数量
选择器中的其他属性和伪类的数量
选择器中元素名称和伪元素的数量
浏览器合并来自每个评估的值,并应用来自最特定样式的属性值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> a { color: black; } a.myclass { color:white; background:grey; } </style> </head> <body> <a href="http://www.html.cn">Visit the website</a> <p>The is a test.</p> <a class="myclass" href="http://html.org">Visit the htmlwebsite</a> </body> </html>
当评估特异性时,您以a-b-c的形式创建一个数字,其中每个字母是三个特征之一的总和。
只有a值相等,浏览器才会比较b值。
只有当a和b的值相同时,浏览器才会考虑c值。
1-0-0的特异性得分比0-2-2更特异。
在上面的代码中,selector a.myclass包含一个类属性,这意味着样式的特殊性是0-1-0。 0用于id值,1用于其他属性,0用于元素名称。
当呈现已分配给myclass类的元素时,浏览器会为color属性找到一个值。对于所有其他的元素,将使用另一个样式的值。
当在具有相同特定性的样式中定义值时,浏览器根据顺序选择值。
例子
<!DOCTYPE HTML> <html> <head> <style type="text/css"> a.myclass1 { color: black; } a.myclass2 { color:white; background:grey; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a paragraph.</p> <a class="myclass1 myclass2" href="http://html.org">html</a> </body> </html>
继承
如果浏览器找不到一个可用样式中的值,它将使用继承。
继承意味着获取由父元素定义的属性的值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> p { color:white; background:grey; border: medium solid black; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a <span>test</span>.</p> <a href="http://html.org">html</a> </body> </html>
span
元素的父代是 p
元素。
span元素从父p元素继承color属性。
不是所有的CSS属性都是继承的。
只有与外观相关的是继承的,包括文本颜色,字体详细信息等。
与布局相关的不是继承。
inherit关键字
你可以通过使用inherit
在样式中强制继承,
inherit
显式地告诉浏览器对属性使用父元素的值。
<!DOCTYPE HTML> <html> <head> <style type="text/css"> p { color:white; background:grey; border: medium solid black; } span { border: inherit; } </style> </head> <body> <a href="http://www.html.cn">website</a> <p>This is a <span>test</span> from www.html.cn.</p> <a href="http://html.org">html</a> </body> </html>