CSS基础:4类组合选择器以及5个注意事项

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃-大专生,一枚程序媛,感谢关注。回复 "前端基础题",可免费获得前端基础 100 题汇总,回复 "前端工具",可获取 Web 开发工具合集

284篇原创内容-更多前端系列内容可以go公众.h:云桃桃

后台回复"前端工具"可获取开发工具,持续更新中

后台回复"前端基础题"可得到前端基础100题汇总,持续更新中

后台回复"前端电子书"可获取20+本精选电子书

前言

要说组合选择器,我们先回顾下简单选择器。

CSS 中的简单选择器包括以下 4 种:

  1. 标签选择器(Element Selector):通过 HTML 元素名称作为选择器,如pdiva等。

  2. 类选择器(Class Selector):通过类名作为选择器,以.开头,如.red-text.btn等。

  3. ID 选择器(ID Selector):通过 ID 属性作为选择器,以#开头,如#header#content等。

  4. 通用选择器(Universal Selector):选择所有元素,使用*作为选择器。

而组合选择器是由多个简单选择器组合而成的选择器,用于更精确地选择 HTML 元素,尤其在一个页面内容多,网页也众多的场景下。那我们一起来看看吧。

4 类组合选择器

一、 后代选择器

(Descendant Selector):用空格分隔不同元素,选择某个元素的后代元素,如div pul li等。以下是 3 个使用后代选择器的 CSS 案例:

  1. 设置页面中所有(.content-box里面的 p 段落标签元素)的样式:

    .content-box p {
    color: #333; /* 设置文字颜色 /
    font-size: 16px; /
    设置字体大小 /
    line-height: 1.5; /
    设置行高 */
    }

  2. 设置导航栏中所有列表项(<li>元素)的样式:

    .navbar li {
    display: inline-block; /* 设置为行内块级元素 /
    margin-right: 10px; /
    设置右侧外边距 */
    }

  3. 设置表格中所有表头单元格(<th>元素)的样式:

    table th {
    background-color: #f2f2f2; /* 设置背景颜色 /
    color: #333; /
    设置文字颜色 /
    font-weight: bold; /
    设置字体加粗 */
    }

二、 子元素选择器

(Child Selector):用>符号选择某个元素的直接子元素,如ul > lidiv > p等。以下是 3 个使用子元素选择器的 CSS 案例:

  1. 选择导航栏中直接的列表项(不包括子菜单):

    .navbar > ul > li {
    display: inline-block;
    margin-right: 10px;
    }

  2. 选择表格中直接的表头行(不包括表头中的单元格):

    table > thead > tr {
    background-color: #f2f2f2;
    color: #333;
    font-weight: bold;
    }

  3. 选择表单中的下拉选择框:

    form > select {
    width: 200px;
    padding: 5px;
    border: 1px solid #ccc;
    }

三、相邻兄弟选择器

(Adjacent Sibling Selector):用+符号选择紧接在某个元素后面的同级元素,如h2 + pdiv + p等。以下是 3 个使用相邻兄弟选择器的 CSS 案例:

  1. 选择文章标题后的第一个段落:

    h2 + p {
    font-weight: bold;
    }

  2. 选择导航栏中当前项后的下一个列表项:

    .nav-item.current + .nav-item {
    font-weight: bold;
    }

  3. 选择表格中第一行数据后的下一行数据:

    tr + tr {
    background-color: #f2f2f2;
    }

四、通用兄弟选择器

(General Sibling Selector):用~符号选择某个元素后面所有同级元素,如h2 ~ pdiv ~ p等。

以下是 3 个使用通用兄弟选择器的 CSS 案例:

  1. 选择文章标题后的所有段落:

    h2 ~ p {
    margin-top: 10px;
    }

  2. 选择导航栏中当前项后的所有列表项:

    .nav-item.current ~ .nav-item {
    opacity: 0.5;
    }

  3. 选择表格中第一行数据后的所有行数据:

    tr:first-child ~ tr {
    border-top: 1px solid #ccc;
    }

如何选择这 4 种选择器?

在项目中选择合适的组合选择器取决于具体的需求和设计目标,以下是一些选择器写作的建议:

  1. 后代选择器(Descendant Selector):适合用于选择嵌套结构中的后代元素,例如选择特定容器内的子元素,或者选择文章内容中的段落和标题。

  2. 子元素选择器(Child Selector):适合用于选择某个元素的直接子元素,这在设计有嵌套结构的导航菜单或树形菜单时特别有用。

  3. 相邻兄弟选择器(Adjacent Sibling Selector):用于选择紧接在某个元素后面的同级元素,适合用于创建特定样式的相邻元素,例如列表项与列表项之间的分隔线。

  4. 通用兄弟选择器(General Sibling Selector):用于选择某个元素后面所有同级元素,适合用于处理表格中除第一行外的所有行、或者列表中除第一个列表项外的所有项的样式。

综合考虑项目的结构、设计需求以及选择器的特性,可以灵活运用这些组合选择器,提高样式的精准度和可维护性。

注意事项

写组合选择器需要注意什么呢,我认为有以下 5 个方面:

  1. 选择器的复杂度:组合选择器的复杂度越高,其匹配的元素也越具体。因此,在使用组合选择器时,应该根据实际需要和设计目标合理选择选择器的复杂度,避免过度嵌套和复杂的选择器结构。

  2. 选择器的可读性:选择器的命名应该具有一定的可读性和语义化,使得其他开发者能够快速理解选择器的作用和目的。选择器命名应该简洁明了,不宜过长或过于复杂。

  3. 避免选择器冲突:在编写组合选择器时,需要注意避免选择器冲突的问题,特别是在多人协作或引入第三方样式库的情况下。可以通过使用较具体的选择器、使用命名空间或者避免全局作用选择器等方式来减少选择器冲突。

  4. 灵活运用通用选择器:通用选择器(Universal Selector)可以用来选择页面上的所有元素,但过度使用通用选择器可能会影响页面性能。因此,在使用通用选择器时应该谨慎,尽量选择更具体的选择器来减少匹配元素的数量。

  5. 考虑选择器的权重:不同类型的选择器具有不同的权重,例如 ID 选择器的权重高于类选择器、属性选择器和标签选择器。在编写组合选择器时,需要考虑选择器的权重,避免样式被其他具有更高权重的选择器覆盖。关于这个权重问题,后面会写到。

总的来说,编写组合选择器需要综合考虑选择器的复杂度、可读性、避免冲突、权重以及性能等方面,保持选择器的简洁、明了和具体性,有助于提高样式表的可维护性和可扩展性。

OK,本文完。

相关推荐
乔峰不是张无忌3304 分钟前
【HTML】动态闪烁圣诞树+雪花+音效
前端·javascript·html·圣诞树
鸿蒙自习室12 分钟前
鸿蒙UI开发——组件滤镜效果
开发语言·前端·javascript
m0_7482507419 分钟前
高性能Web网关:OpenResty 基础讲解
前端·openresty
桃园码工30 分钟前
8_HTML5 SVG (4) --[HTML5 API 学习之旅]
html5·svg·滤镜·文本·stroke
前端没钱1 小时前
从 Vue 迈向 React:平滑过渡与关键注意点全解析
前端·vue.js·react.js
NoneCoder1 小时前
CSS系列(29)-- Scroll Snap详解
前端·css
无言非影1 小时前
vtie项目中使用到了TailwindCSS,如何打包成一个单独的CSS文件(优化、压缩)
前端·css
我曾经是个程序员1 小时前
鸿蒙学习记录
开发语言·前端·javascript
羊小猪~~2 小时前
前端入门之VUE--ajax、vuex、router,最后的前端总结
前端·javascript·css·vue.js·vscode·ajax·html5
摸鱼了2 小时前
🚀 从零开始搭建 Vue 3+Vite+TypeScript+Pinia+Vue Router+SCSS+StyleLint+CommitLint+...项目
前端·vue.js