为什么:不是(p)看似选择<p>标签?</p>

时间:2013-04-16 03:02:35

标签: html css css-selectors

我的HTML是这样的:

<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="stylesheet.css">
<head>
</head>
<body>
<p>hiya</p>
<h1>this is h1</h1>
<h2>this is h2</h2>
</body>
</html>

我的stylsheet.css是这样的:

:not(p)
{
color:#ff0000;
} 

然而一切都是红色的,包括<p>。我尝试过Firefox 20,Internet Explorer 10和Chrome。它似乎没有比这更基本,但我无法弄清楚为什么这不起作用(防止<p>变红,即)。对此有任何帮助将非常感激。

3 个答案:

答案 0 :(得分:24)

:not(p)匹配body

默认color值为inherit

p没有设置样式。

因此,

pbody继承其颜色,该颜色为红色。

解决方案:明确定义您想要变红的内容,或明确为p设置不同的颜色(即不要使用:not),或使用:not(body):not(p)

答案 1 :(得分:7)

这看起来是因为您没有为p标签定义特定样式。所以:不是(p)甚至适用于身体元素和继承。

答案 2 :(得分:0)

您可以为<p>创建单独的ID,然后在css中使用not

HTML

<p class="hiya" id="hiya">hiya</p>
<p class="hi" id="hi">hi</p>
<h1>this is h1</h1>
<h2>this is h2</h2>

CSS

p:not(#hiya) { color:#ff0000; }

这将为<p>生成输出红色,但<p>除外,其ID为“hiya”。