【发布时间】:2020-01-06 22:10:20
【问题描述】:
使用下面的 HTML,我的 CSS 是否按照我下面的规定显示?
HTML:
<ul>
<li>1</li>
<li>2</li>
<ul>
<li>3</li>
</ul>
<li>4</li>
</ul>
CSS:
ul + li /* 1 and 3 */
ul > li /* 1, 2 and 3 */
ul ~ li /* 1, 2, 3 and 4 */
同样重要的是,我哪里做错了?
【问题讨论】:
-
我看到的第一个问题是
ul应该只有lis 作为孩子。您可以将ul放在li中,但它不应该是ul的直接子代。其次,+和~都是兄弟选择器,所以ul + li或ul ~ li永远不应该匹配任何东西。但是在您提供的代码中,两者都只会将li与内容 4 匹配。>是直接子选择器,因此它将匹配您的所有lis。 -
查看此内容以获得快速参考:techbrij.com/css-selector-adjacent-child-sibling
-
为此使用 first-child、last-child 和 nth-child() 选择器。你的方法看起来太具体了。
-
shadymoses:感谢您的链接......尽管链接非常好,但我很难理解您的第一段。例如,第二个 ul 是 li(2) 的第一个孩子,但我想你说它是第一个 ul 的直接孩子。另一个例子... li(1) 是 ul(1) 的第一个兄弟,但你说 + 和 ~ 不应该匹配任何东西?原谅我的迟钝,但我真的遇到了麻烦。
-
@JohnLove shadymoses 是对的;第二个
ul是第一个ul的子代,这是不正确的。您应该修复它,以便第二个ul在li内。
标签: html css css-selectors html-lists