关系选择器 概述:CSS 构建 我们要了解的最后一种选择器被命名为关系选择器(Combinator),这是因为它们在其他选择器之间和其他选择器与文档内容的位置之间建立了一种有用的关系的缘故。 学习前提: 基础电脑知识、 安装了基本的软件 、 文件处理 基本知识、HTML 基础(学习 HTML 介绍 ),以及对 CSS 工作原理的了解(学习 CSS 初步 ) 了解 CSS 里面可用的不同关系选择器。 后代选择器 后代选择器——典型用单个空格(" ")字符——组合两个选择器,比如,第二个选择器匹配的元素被选择,如果他们有一个祖先(父亲,父亲的父亲,父亲的父亲的父亲,等等)元素匹配第一个选择器。选择器利用后代组合符被称作后代选择器。 css body article p 下面的示例中,我们只会匹配处于带有.box类的元素里面的<p>元素。</div></section><section aria-labelledby="子代关系选择器"><h2 id="子代关系选择器"><a href="#子代关系选择器">子代关系选择器</a></h2><div class="section-content"><p>子代关系选择器是个大于号(<code>></code>),只会在选择器选中直接子元素的时候匹配。继承关系上更远的后代则不会匹配。例如,只选中作为<code><article></code>的直接子元素的<code><p></code>元素:</p> <div class="code-example"><div class="example-header"><span class="language-name">css</span></div><pre class="brush: css notranslate"><code>article > p <p>下个示例中,我们弄了个有序列表,内嵌于另一个无序列表里面。我用子代关系选择器,只选中为<code><ul></code>的直接子元素的<code><li></code>元素,给了它们一个顶端边框。</p> <p>如果你移去指定子代选择器的<code>></code>的话,你最后得到的是后代选择器,所有的<code><li></code>会有个红色的边框。</p><iframe width="100%" height="600" src="https://mdn.github.io/css-examples/learn/selectors/child.html" loading="lazy"/></div></section><section aria-labelledby="邻接兄弟"><h2 id="邻接兄弟"><a href="#邻接兄弟">邻接兄弟</a></h2><div class="section-content"><p>邻接兄弟选择器(<code>+</code>)用来选中恰好处于另一个在继承关系上同级的元素旁边的物件。例如,选中所有紧随<code><p></code>元素之后的<code><img></code>元素:</p> <div class="code-example"><div class="example-header"><span class="language-name">css</span></div><pre class="brush: css notranslate"><code>p + img <p>常见的使用场景是,改变紧跟着一个标题的段的某些表现方面,就像是我下面的示例那样。这里我们寻找一个紧挨<code><h1></code>的段,然后样式化它。</p> <p>如果你往<code><h1></code>和<code><p></code>之间插入其他的某个元素,例如<code><h2></code>,你将会发现,段落不再与选择器匹配,因而不会应用元素邻接时的前景和背景色。</p><iframe width="100%" height="800" src="https://mdn.github.io/css-examples/learn/selectors/adjacent.html" loading="lazy"/></div></section><section aria-labelledby="通用兄弟"><h2 id="通用兄弟"><a href="#通用兄弟">通用兄弟</a></h2><div class="section-content"><p>如果你想选中一个元素的兄弟元素,即使它们不直接相邻,你还是可以使用通用兄弟关系选择器(<code>~</code>)。要选中所有的<code><p></code>元素后<em>任何地方</em>的<code><img></code>元素,我们会这样做:</p> <div class="code-example"><div class="example-header"><span class="language-name">css</span></div><pre class="brush: css notranslate"><code>p ~ img <p>在下面的示例中,我们选中了所有的 <code><h1></code>之后的<code><p></code>元素,虽然文档中还有个 <code><div></code>,其后的<code><p></code>还是被选中了。</p><iframe width="100%" height="600" src="https://mdn.github.io/css-examples/learn/selectors/general.html" loading="lazy"/></div></section><section aria-labelledby="使用关系选择器"><h2 id="使用关系选择器"><a href="#使用关系选择器">使用关系选择器</a></h2><div class="section-content"><p>你能用关系选择器,将任何在我们前面的学习过程中学到的选择器组合起来,选出你的文档中的一部分。例如如果我们想选中为<code><ul></code>的直接子元素的带有“a”类的列表项的话,我可以用下面的代码。</p> <div class="code-example"><div class="example-header"><span class="language-name">css</span></div><pre class="brush: css notranslate"><code>ul > li[class="a"] {