为什么在<p>标签内时,这个CSS选择器不适用于<li>

use*_*623 0 html css css-selectors

我正在为我的考试进行修改,在没有标记的情况下回答过去的一些问题,我对此感到困惑:

对于以下规则,请说明影响以及影响哪些元素:

p ul li {
   color:blue;
}
Run Code Online (Sandbox Code Playgroud)

我在JSFiddle上写了一些html:http://jsfiddle.net/2nkmzgv2/

无论如何它在这里:

<p>
  <ul>
      <li>Should this be blue?</li>
  </ul>
</p>
Run Code Online (Sandbox Code Playgroud)

所以没有任何事情发生在文本中,我会认为它会改变蓝色,但实际上没有任何意义发生,问题的目的是抛弃你,或者我的语法/方法在html中是错误的?

小智 5

这是因为在p元素中不允许使用ol/ul项.

ol/ul应该在<p>内还是在外面?

这似乎是你考试的一个技巧问题.很可能你会想要了解HTML规范,因为这个问题并不仅仅基于CSS知识.

您正在获取所描述的行为,因为<p>不能包含块级元素,如<ul><ol>.浏览器(例如,Chrome)知道这是不可能的,因此通过将块元素放在两个段落之间来尝试处理您的非法结构:

在此输入图像描述

因此,您声明的规则li不适用.

p ul li {
  color: blue;
}
Run Code Online (Sandbox Code Playgroud)
<p>
  Hello
  <ul>
    <li>I'm never blue.</li>
  </ul>
  Goodbye
</p>
Run Code Online (Sandbox Code Playgroud)

其他技巧问题可能是:

a a { color:red }
p p { color:blue; }
Run Code Online (Sandbox Code Playgroud)