要说组合选择器,我们先回顾下简单选择器。
CSS 中的简单选择器包括以下 4 种:
而组合选择器是由多个简单选择器组合而成的选择器,用于更精确地选择 HTML 元素,尤其在一个页面内容多,网页也众多的场景下。那我们一起来看看吧。
(Descendant Selector):用空格分隔不同元素,选择某个元素的后代元素,如div p、ul li等。以下是 3 个使用后代选择器的 CSS 案例:
.content-box p {
color: #333; /* 设置文字颜色 */
font-size: 16px; /* 设置字体大小 */
line-height: 1.5; /* 设置行高 */
}
.navbar li {
display: inline-block; /* 设置为行内块级元素 */
margin-right: 10px; /* 设置右侧外边距 */
}
table th {
background-color: #f2f2f2; /* 设置背景颜色 */
color: #333; /* 设置文字颜色 */
font-weight: bold; /* 设置字体加粗 */
}
(Child Selector):用>符号选择某个元素的直接子元素,如ul > li、div > p等。以下是 3 个使用子元素选择器的 CSS 案例:
.navbar > ul > li {
display: inline-block;
margin-right: 10px;
}
table > thead > tr {
background-color: #f2f2f2;
color: #333;
font-weight: bold;
}
form > select {
width: 200px;
padding: 5px;
border: 1px solid #ccc;
}
(Adjacent Sibling Selector):用+符号选择紧接在某个元素后面的同级元素,如h2 + p、div + p等。以下是 3 个使用相邻兄弟选择器的 CSS 案例:
h2 + p {
font-weight: bold;
}
.nav-item.current + .nav-item {
font-weight: bold;
}
tr + tr {
background-color: #f2f2f2;
}
(General Sibling Selector):用~符号选择某个元素后面所有同级元素,如h2 ~ p、div ~ p等。
以下是 3 个使用通用兄弟选择器的 CSS 案例:
h2 ~ p {
margin-top: 10px;
}
.nav-item.current ~ .nav-item {
opacity: 0.5;
}
tr:first-child ~ tr {
border-top: 1px solid #ccc;
}
在项目中选择合适的组合选择器取决于具体的需求和设计目标,以下是一些选择器写作的建议:
综合考虑项目的结构、设计需求以及选择器的特性,可以灵活运用这些组合选择器,提高样式的精准度和可维护性。
写组合选择器需要注意什么呢,我认为有以下 5 个方面:
总的来说,编写组合选择器需要综合考虑选择器的复杂度、可读性、避免冲突、权重以及性能等方面,保持选择器的简洁、明了和具体性,有助于提高样式表的可维护性和可扩展性。

