讲师在讲座中提出的一个问题:
哪个 CSS 选择器将只选择单词“bar”进行样式设置?
<p class="a">foo, <span class="a">bar</span></p>
span.a
p .a
.a span
- 所有这些
给出的答案是(4)。
(1) 是显而易见的,因为只有bar
(而不是foo
)可以受span
具有 class 的选择器影响a
,但 (2) 和 (3) 不太明显。有人会分解每种情况下发生的事情吗?
讲师在讲座中提出的一个问题:
哪个 CSS 选择器将只选择单词“bar”进行样式设置?
<p class="a">foo, <span class="a">bar</span></p>
span.a
p .a
.a span
给出的答案是(4)。
(1) 是显而易见的,因为只有bar
(而不是foo
)可以受span
具有 class 的选择器影响a
,但 (2) 和 (3) 不太明显。有人会分解每种情况下发生的事情吗?
让我为你详细说明
span.a
- 这将选择span
具有类的文档中的所有标签a
p.a
- 这将选择所有p
具有类的元素a
p .a
- 这将选择所有a
嵌套类的元素p
.a span
- 这将选择span
嵌套在类下的所有标签a
解释你的情况
<p class="a">foo, <span class="a">bar</span></p>
a.span
将在选择具有类的跨度标签时更改条形颜色a
p.a
还将更改条形颜色,因为它嵌套在p
具有a
. 因此span
标签将继承颜色。(另外,我想在这里指出,这个选择器也会改变颜色foo
)
p .a
也会选择栏,因为span
具有类的标签a
嵌套在p
.a span
也将颜色应用于span
嵌套在具有类的标签下的 bar 单词a
所以从技术上讲,答案是所有这些都会改变酒吧的颜色
以上都是正确答案,因为:
span.a /* Selects all span elements with class 'a' */
p .a /* Selects all child elements of p that have class 'span' */
.a span /* Selects all child span elements of elements with class 'a' */
父子关系。在所有这些中,您都在选择父母并导航到第一个孩子。如果您有一个列表,则必须使用第 n 个子选择器浏览选择器。
这一切都非常简单,这里是对 CSS 解释的英文演练:
2)find <p>
(行),然后在里面<p>
使用class="a"
,所以这是 <span class="a">bar</span>
3)findclass="a"
然后在里面<span>