我有以下HTML代码:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
/*
p.second > h2 {
color: red;
}
*/
p > h2 {
color: red;
}
</style>
</head>
<body>
<p >
<h2>hello,world</h2>
<h2>hello,world</h2>
</p>
</body>
</html>
我希望看到 hello,world 为红色,但事实并非如此。我做错了什么?
答案 0 :(得分:6)
问题是:
<p>
<h2>hello,world</h2>
<h2>hello,world</h2>
</p>
不是有效的HTML代码(或者至少是令人难以置信的草率 HTML代码)。 <p>
标记只能包含内联元素,因为<h2>
标记是一个块元素。基本上,一旦浏览器看到<h2>
标记,它就会自动关闭<p>
标记,使两个标记成为兄弟姐妹。您需要使用其他包含元素,例如<div>
:
<div>
<h2>hello,world</h2>
<h2>hello,world</h2>
</div>
然后你的风格是:
div > h2 {
color: red;
}
答案 1 :(得分:2)
这不仅仅是关于网络标准或礼仪的协议,而是实际的障碍,你不能
很多浏览器都不允许你这样做,它们会撕掉段落和标题。
因此,任何p h2
或p > h2
选择器都无效,您尝试使用p + h2{ color: red;}
(它适用于以p标签开头的h2标签)或类似的东西
答案 2 :(得分:2)
这是因为
<p >
<h2>hello,world</h2>
相当于
<p >
</p><h2>hello,world</h2>
如果
p
元素是立即的,则可以省略p
元素的结束标记 接着是address
,article
,aside
,blockquote
,dir
,div
,dl
,fieldset
,footer
,form
,h1
,h2
,h3
,h4
,{ {1}},h5
,h6
,header
,hgroup
,hr
,menu
,nav
,ol
,p
,pre
,section
或table
,元素,或者如果有的话 父元素中没有更多内容,父元素不是ul
元素。
因此a
元素永远不能是h2
元素的子元素,除非该页面是使用XML Content-type提供的。
答案 3 :(得分:1)
您无法h2
进入p
,因为它不是有效的HTML代码。
只需将p
替换为div
即可。
答案 4 :(得分:1)