强选择器如何覆盖 id 选择器? id 选择器不是更具体吗?
How does a strong selector override an id selector? Isn't an id selector considered more specific?
在下面的代码片段中,strong 选择器为什么会覆盖 id 选择器? id 选择器不是更具体,因此具有优先权吗?
<!doctype html>
<html>
<head>
<title>Sample document</title>
<style>
strong{color:red;}
#abc {color:blue;}
</style>
</head>
<body>
<p id="abc">
<strong>C</strong>ascading
<strong>S</strong>tyle
<strong>S</strong>heets
</p>
</body>
</html>
你说的很明确,但选择器只适用于元素的直接内容。因此 strong
元素的文本颜色不同,因为它嵌套得更深,而 p
选择器无法更改这些元素的颜色。因此,如果您确实想更改 #abc
的强元素,您可以这样做
strong { color: red; }
#abc strong { color: blue; }
如果您希望 strong
标签文本与 p
文本相同,那么您可以这样做
#abc, #abc strong { color: red; }
strong { color: red; }
#abc strong { color: blue; }
#def, #def strong { color: red; }
<p id="abc">
<strong>C</strong>ascading
<strong>S</strong>tyle
<strong>S</strong>heets
</p>
<p id="def">
<strong>ABC</strong>
DEF
</p>
在下面的代码片段中,strong 选择器为什么会覆盖 id 选择器? id 选择器不是更具体,因此具有优先权吗?
<!doctype html>
<html>
<head>
<title>Sample document</title>
<style>
strong{color:red;}
#abc {color:blue;}
</style>
</head>
<body>
<p id="abc">
<strong>C</strong>ascading
<strong>S</strong>tyle
<strong>S</strong>heets
</p>
</body>
</html>
你说的很明确,但选择器只适用于元素的直接内容。因此 strong
元素的文本颜色不同,因为它嵌套得更深,而 p
选择器无法更改这些元素的颜色。因此,如果您确实想更改 #abc
的强元素,您可以这样做
strong { color: red; }
#abc strong { color: blue; }
如果您希望 strong
标签文本与 p
文本相同,那么您可以这样做
#abc, #abc strong { color: red; }
strong { color: red; }
#abc strong { color: blue; }
#def, #def strong { color: red; }
<p id="abc">
<strong>C</strong>ascading
<strong>S</strong>tyle
<strong>S</strong>heets
</p>
<p id="def">
<strong>ABC</strong>
DEF
</p>