【前段基础入门之】=>你不知道的 CSS 选择器的进阶使用!

news2024/11/24 7:52:38

在这里插入图片描述
导语

在上一章节中,我们了解了 CSS 的一些基本语法概念,那么在这一章节中我们就带来 CSS 选择器知识的分享,选择器这一章的知识点有一点多,不过我们只要认真去理解,学习它也是没什么问题的,还有,当我们掌握好CSS选择器的使用后,并能熟练的去运用它,这对于我们之后的正式开发是有很多帮助的。

在这里插入图片描述

文章目录

  • 基本选择器
    • 通配符选择器
    • 元素选择器
    • 类选择器
    • ID选择器
    • 基本选择器总结:
  • 复合选择器
    • 基础复合选择器
      • 交集选择器
      • 并集选择器
      • 补充:HTML元素间的结构关系
      • 后代选择器
      • 子级选择器
      • 兄弟选择器
    • 高级复合选择器
      • 属性选择器
      • 伪类选择器
        • 动态伪类
        • 结构伪类
        • 否定伪类
        • UI 伪类:
        • 目标伪类
        • 语言伪类
      • 伪元素选择器
  • CSS 选择器优先级(权重)
  • CSS 的三大特性
    • 层叠性
    • 继承性
    • 优先级
  • 总结

基本选择器

概念:

本章节分析讲解的顺序是按照,简单到进阶的过程讲解,首先 基本选择器,作为 CSS 中的基础项,可以更加简单直接的选定元素。缺点是,处理复杂场景下的选项时,效率一般。

通配符选择器

  • 作用:可以选中所有的 HTML 元素。
  • 语法
* {
   属性名: 属性值;
}
  • 示例
/* 选中 HTML中的 所有元素 ,为其设定样式*/
* {
    color: red;
    font-size: 25px;
}

使用场景:

常用于为其全局 HTML,清楚默认样式


元素选择器

  • 作用:为页面中 某种元素 统一设置样式。
  • 语法
(直接写)元素标签名 {
   属性名: 属性值;
}
  • 示例
/* 选中页面中,所有的  h1 元素 */
h1 {
    color: rgb(0, 255, 60);
    font-size: 25px;
}

/* 选中页面中,所有的  p 元素 */
p {
    color: aquamarine;
    font-weight: bold;
}

注意

元素选择器 无法实现差异化设置,例如上面的代码中,全局所有的 p 元素效果都一样。


类选择器

  • 作用:根据元素的 class 值,来将某些元素进行归类,并选中这些元素。
  • 语法
.类名 {
   属性名: 属性值;
}
  • 示例
/* 选中所有class值为speak的元素 */
.speak {
    background-color: blueviolet;
    font-size: 25px;
}

/* 选中所有class值为answer的元素 */
.answer {
    color: aquamarine;
    font-weight: 600;
}

值得注意

在这里插入图片描述
在这里插入图片描述


ID选择器

  • 作用:根据元素的 ID 属性值,来精准的选中某个元素
  • 语法
#id值 {
   属性名: 属性值;
}
  • 示例
/* 选中id值为earthy的那个元素 */
#earthy {
    color: red;
    font-size: 60px;
}
  • 【值得注意】
    • id 属性值:尽量由字母、数字、下划线( _ )、短杠( - )组成最好以字母开头、不要包含空格、区分大小写。
    • 一个元素只能拥有一个 id 属性,多个元素的 id 属性值不能相同,具有 唯一性
    • 一个元素可以同时拥有 idclass 属性。

基本选择器总结:

基本选择器特性用法
通配选择器选中所有标签,一般用于清除全局默认样式。* {color:red}
元素选择器选中所有同种标签,但是不能差异化选择。h1 {color:red}
类选择器选中所有特定类名( class 值)的元素 —— 使用频率很高.say {color:red}
ID选择器选中特定 id 值的那个元素(具有唯一性)。#earthy {color:red}

复合选择器

  • 复合选择器建立在基本选择器之上,由多个基础选择器,通过不同的方式组合而成。
  • 复合选择器可以在复杂结构中,快速而准确的选中元素

基础复合选择器

交集选择器

在这里插入图片描述

  • 作用:选中 同时符合 多个条件的元素。
  • 语法
    在这里插入图片描述
  • 示例
/* 选中类名为  speak 的 h1 元素*/
h1.speak {
    color: aqua;
}

/* 选中:类名为beauty的p元素,为此种写法用的非常多!!!! */
p.beauty {
    color: blue;
}

/* 选中:类名包含rich和beauty的元素 */
.rich.beauty {
    color: green;
}

值得注意

  1. 有标签名,标签名必须写在前面
  2. id 选择器、通配选择器,理论上可以作为交集的条件,但实际应用中几乎不用 —— 因为没有意义。
  3. 交集选择器中 不可能 出现两个元素选择器,因为一个元素,不可能即是 p 元素又是 span 元素。
  4. 用的最多的交集选择器是:元素选择器配合类名选择器,例如:p.beauty

并集选择器

概念:所谓并集就是 或者 的含义(通俗理解:要么......要么...... 的意思)。

  • 作用:选中多个选择器对应的元素,又称:【分组选择器】。

  • 语法在这里插入图片描述

    • 多个选择器通过 ,连接,此处 , 的含义就是:
  • 示例

/* 选中id为peiqi,或类名为rich,或类名为beauty的元素 */
#peiqi,
.rich,
.beauty {
    font-size: 40px;
    background-color: skyblue;
    width: 200px;
}

值得注意:

  1. 并集选择器,我们一般竖着写,结构更清晰点。
  2. 任何形式的选择器,都可以作为并集选择器的一部分 。
  3. 并集选择器,通常用于集体声明,可以缩小样式表体积。

补充:HTML元素间的结构关系

结构关系可分为

  1. 父元素
  2. 子元素
  3. 祖先元素
  4. 后代元素
  5. 兄弟元素

【父元素】直接包裹某个元素的元素,就是该元素的父元素。

引用尚硅谷图片

【子元素】被父元素直接包含的元素(简记:儿子元素)。

引用尚硅谷图片
【祖先元素】父亲的父亲…,一直往外找,都是祖先元素
注明:备注:父元素,也算是祖先元素的一种。

引用尚硅谷图片
【后代元素】儿子的儿子…,一直往里找,都是后代元素
注明:备注:子元素,也算是后代元素的一种。
引用尚硅谷图片
【兄弟元素】具有相同父元素的元素,互为兄弟元素。

引用尚硅谷图片


后代选择器

  • 作用:选中指定元素中,符合要求的后代元素

  • 语法在这里插入图片描述

    • 选择器之间,用空格隔开,空格可以理解为:" xxx 中的",其实就是后代的意思。
  • 示例

/* 选中ul中的所有li */
ul li {
    color: red;
}

/* 选中ul中所有li中的a */
ul li a {
    color: orange;
}

/* 选中类名为subject元素中的所有li */
.subject li {
    color: blue;
}

/* 选中类名为subject元素中的所有类名为front-end的li */
.subject li.front-end {
    color: blue;
}

值得注意

  1. 后代选择器,最终选择的是后代,不选中祖先元素。
  2. 儿子、孙子、重孙子,都算是后代。
  3. 结构一定要符合 HTML 嵌套规则要求,例如:不能 p 中写 h1 ~ h6

子级选择器

  • 作用:选中指定元素中,符合要求的元素(儿子元素)。(先写父,再写子)

  • 别名:子元素选择器、子选择器、子代选择器。

  • 语法在这里插入图片描述

    • 选择器之间,用 > 隔开, > 可以理解为:" xxx 的子代",其实就是儿子的意思。
  • 示例

/* div中的子级a元素 */
div>a {
    color: red;
}

/* 类名为persons的元素中的子级a元素 */
.persons>a {
    color: red;
}

值得注意

  1. 子代选择器,最终选择的是子代,不是父级
  2. 子、孙子、重孙子、重重孙子 … 统称后代!,子就是指儿子

在这里插入图片描述


兄弟选择器

  • 相邻兄弟选择器:
    • 作用:选中指定元素后,符合条件并且紧挨着相邻兄弟的元素
    • 语法选择器1 + 选择器2 {} 。
    • 示例
/* 选中div后相邻的兄弟p元素 */
div+p {
    color: red;
}
  • 通用兄弟选择器:

    • 作用:选中指定元素后,符合条件的 所有兄弟元素
    • 语法选择器1 ~ 选择器2 {} 。
    • 示例
/* 选中div后的所有的兄弟p元素 */
div~p {
    color: red;
}

值得注意

  • 两种兄弟选择器,查找兄弟的时候,都是顺序,从上向下找去匹对的。

高级复合选择器

属性选择器

  • 作用::选中属性值符合一定要求的元素。

  • 语法

    • [ 属性名 ] 选中 具有 某个属性的元素。
    • [ 属性名="值" ] 选中包含某个属性,且属性值 等于 指定值的元素。
    • [ 属性名^="值" ] 包含 某个属性,且属性值以指定的值 开头 的元素。
    • [ 属性名$="值" ] 选中 包含 某个属性,且属性值以指定的值 结尾 的元素。
    • [ 属性名*=“值” ] 选择包含某个属性,属性值 包含 指定值的元素。
  • 示例

/* 选中具有title属性的元素 */
div[title] {
    color: red;
}

/* 选中 title 属性值为cor的元素 */
div[title="cor"] {
    color: red;
}

/* 选中title属性值以c开头的元素 */


div[title^="c"] {
    color: red;
}

/* 选中title属性值以r结尾的元素 */
div[title$="r"] {
    color: red;
}

/* 选中title属性值包含o的元素 */
div[title*="o"] {
    color: red;
}

伪类选择器

  • 作用:选中特殊状态的元素
  • 概念:如何理解 【伪类】 — 像类( class ),但不是类,是元素的一种特殊状态
动态伪类
  1. :link:超链接 未被访问的状态 【超链接a 标签独享】
  2. :visited:超链接 被访问过的状态 【超链接a 标签独享】
  3. :hover:超链接 鼠标悬停在元素上的状态
  4. :active 元素 激活 的状态。
    在这里插入图片描述
  5. :focus : 元素获取焦点时的状态

注明:只有表单类元素才能使用 :focus 伪类。


结构伪类
  1. :first-child :所有兄弟元素中的 第一个
  2. :last-child :所有兄弟元素中的 最后一个
  3. :nth-child(n) :所有兄弟元素中的 第 N 个元素
  4. :first-of-type:所有 同类型兄弟元素中的 第 一个元素
  5. :last-of-type:所有 同类型兄弟元素中的 最后一个元素
  6. :nth-of-type(n) :所有 同类型兄弟元素中的 第 N 个元素

注意关于 n 的 取值范围

在这里插入图片描述
结构伪类扩展补充【了解即可】:

语法描述
:nth-last-child(n)所有兄弟元素中的倒数第 n 个。
:nth-last-of-type(n)所有同类型兄弟元素中的 倒数第n
:only-of-type 选择没有同类型兄弟的元素。
:only-child选择没有兄弟的元素(独生子女)。
:root选中全局 html 根元素
:empty内容为空元素(空格也算内容)。

否定伪类
  • :not(选择器): 排除 满足括号中条件的元素

UI 伪类:
  1. :checked :被选中获取焦点的复选框或单选按钮
  2. :enable: 可用的表单元素(没有 disabled 属性)。
  3. :disabled: 不可用的表单元素(有 disabled 属性)。

使用场景:UI 伪类,主要运用在 表单元素


目标伪类
  • :target :选中锚点指向的元素
  • 使用场景常用于锚点跳转时,为其匹配到的锚点元素指定样式

语言伪类
  • :lang() 根据指定的语言类型选择元素(本质是看 lang 属性的值)。

伪元素选择器

作用选中元素中的一些特殊位置,在某个位置创建一个元素,并为其指定样式填充

语法描述
::first-letter 选中元素中的第一个文字
::first-line选中元素中的第一行文字
::selection 选中被鼠标选中的内容
::placeholder 选中输入框的提示文字
::before在元素最开始的位置,创建一个子元素,并为其指定样式(需配合content指定内容)
::after 在元素最后的位置,创建一个子元素,并为其指定样式(也需配合content指定内容)

CSS 选择器优先级(权重)

概述

通过不同的选择器,选中相同的元素时,并且为相同的样式名设置了不同的属性值时,就触发了样式的冲突! 这时候就需要通过计算选择器的权重优先级来适配样式了

  • 基础选择器权重:
    在这里插入图片描述

  • 复合选择器需通过计算规则决定优先级:

    • 计算方式每个选择器,都可计算出一组权重,格式为: (a,b,c)
      在这里插入图片描述
    • 比较规则按照从左到右的顺序,依次比较大小,当前位胜出后,后面的不再对比,胜出者为最终展示的样式。 如:
      在这里插入图片描述
  • 特殊规则:

    • 行内样式权重大于所有选择器
    • !important 的权重,大于行内样式,大于所有选择器,权重最高

CSS 的三大特性

层叠性

  • 概念:如果发生了样式冲突,会触发一定的规则(先匹配选择器的优先级,优先级如果相同,则后声明样式覆盖掉前面样式。

继承性

  • 概念元素会自动拥有其父元素、或其祖先元素上所设置的某些样式
  • 继承规则优先继承距离最近的。
  • 常见可继承属性

CSS中有许多可继承属性,这些属性可以被子元素继承并应用到其父元素。以下是一些常见的可继承属性:

可继承属性类可继承属性值
字体属性font、font-size、font-style、font-weight、line-height
文本属性text-align、text-indent、text-transform、text-decoration
颜色属性color
列表属性list-style、list-style-type、list-style-position
表格属性border-collapse、border-spacing、caption-side
元素可见性属性visibility
光标属性cursor

值得注意并非所有的CSS属性都是可继承的,因此需要根据需要手动为子元素设置相应的样式。

优先级

  • 直观理解!important > 行内样式 > ID选择器 > 选择器 > 元素选择器 > * (通配符选择器)> 继承来的样式。
  • 细致分析需计算权重
    在这里插入图片描述

总结

本章节,详细的聊了有关 CSS 选择器有关的知识,同时也分析了 CSS 选择器的 权重的计算方式,最后还总结了 CSS 的三大特性。毫无疑问,本章节知识点还是值得大家去参考学习的,这也是博主创作结束博文的初衷!


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本

目录 问题解决验证附:开源项目微服务商城项目前后端分离项目 问题 在 PowerShell 命令行窗口使用 pnpm run dev 启动 vue3-element-admin 报错: pnpm : 无法加载文件 C:\Users\youlai\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚…

【kubernetes】kubernetes中的Ingress使用

文章目录 1 Service和Endpoint1.1 服务的转发1.2 headless service及其使用场景1.3 服务的类型 2 Ingress3 ingress controller4 IngressClass5 nginx-ingress-controller 1 Service和Endpoint k8s中运行的最小单位是Pod,如果单独运行Pod,没有用控制器进…

假期get新技能?低代码模型应用工具HuggingFists

HuggingFists是什么? HuggingFists是一款研究和使用HuggingFace模型和数据集的AI应用工具。 众所周知,Hugging Face是一家人工智能(AI)技术公司,致力于开发和推广自然语言处理(NLP)技术&#xf…

工信部:杭州亚运会开幕式首创 5G 超密组网方案,场馆网络无缝覆盖

“工信 V 报”今日发布消息称,工信部经过精心统筹、周密部署,举全系统之力圆满完成了杭州亚运会开幕式各项保障任务。 据介绍,亚运会的指挥调度、安全保卫、通信网络、计时记分、电视转播等系统顺畅运行,对无线电安全、信息通信服…

《Jetpack Compose从入门到实战》第三章 定制 UI 视图

目录 配置颜色、字体与形状Welcome PageLogin PageHome Page 主题CompositionLocal 配置颜色、字体与形状 -ui.theme.Color.kt val pink100 Color(0xFFFFF1F1) val pink900 Color(0xFF3F2C2C) val white Color(0xFFFFFFFF) val white850 Color(0xD9FFFFFF) val gray Col…

朝着“强国建设民族复兴”之路奋勇前行

今(2023年10月1日)天,本“人民体验官”隆重推广人民日报官方微博文化产品《人民日报国庆社论#:坚定不移朝着强国建设、民族复兴的宏伟目标奋勇前进》。 图:来源“人民体验官”推广平台 以下推广今天的《人民日报》社论…

深度学习与python theano

文章目录 前言1.安装2.基本用法3.function用法4.shared 变量5.activation function6.Layer层7.regression 回归例子8.classification分类学习9.过拟合10.正则化11.save model12 总结 前言 本章主要介绍深度学习与python theano。 1.安装 2.基本用法 3.function用法 4.sha…

Linux系统编程系列之进程间通信-信号量组

一、什么是信号量组 信号量组是信号量的一种, 是system-V三种IPC对象之一,是进程间通信的一种方式。 二、信号量组的特性 信号量组不是用来传输数据的,而是作为“旗语”,用来协调各进程或者线程工作的。信号量组可以一次性在其内…

【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

基于Python3搭建qt开发环境

Python可视化编程相信大部分刚接触都是tkinter,tkinter是Python自带的库,不需要安装第三方库即可使用,在我的Python专栏中也有很多基于tkinter来设计的可视化界面。本篇文章将尝试另外一个Python的可视化编程库(pyqt),与tkinter编…

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载 前言说明1. 安装操作系统分区配置2. 大磁盘分区管理3. LVM逻辑卷管理3.1. 创建LVM逻辑卷3.1.1. 创建物理卷PV3.1.2. 创建卷组VG3.1.3. 创建逻辑卷LV3.1.4. 创建并挂载文件系统3.1.5. 配置开机自动挂载 3.2. 逻…

bypass disable_function 学习

LD_PRELOAD 我是在做了 buu的 REC ME 来做这个系列 所以 LD_PRELOAD 已经有了解了 我们来做这个题目 CTFHub Bypass disable_function —— LD_PRELOAD本环境来源于AntSword-Labs <!DOCTYPE html> <html> <head><title>CTFHub Bypass disable_func…

零基础Linux_9(进程)环境变量+进程地址空间+进程创建fork

目录 1. 环境变量 1.1 环境变量基本概念 1.2 环境变量PATH 1.3 环境变量HOME和SHELL 1.4 获取环境变量&#xff08;main函数参数&#xff09; 1.4.1 main函数第三个参数 1.4.2 设置普通变量和环境变量 1.4.3 main函数前两个参数 2. 进程地址空间 2.1 验证进程地址空…

技术Leader对下管理的法宝-SMART

SMART方法论 源于国外管理大师的《管理的实践》是管理者能够更加明确员工高效工作的利器&#xff0c;科学、规范的对员工绩效制定考核目标和考核标准5个单词缩写 Specific:目标要具体Measurable:目标成果要可衡量(量化) Attainable:目标要可实现&#xff0c;避免过高/过低Rel…

为什么字节大量用GO而不是Java?

见字如面&#xff0c;我是军哥。 我看很多程序员对字节编程语言选型很好奇&#xff0c;为此我还特地问了在字节的两位4-1的技术大佬朋友&#xff0c;然后加上自己的思考&#xff0c;总结了一下就以下 2 个原因&#xff1a; 1、 选型上没有历史包袱 字节的早期的程序员大多来自于…

OpenHarmony Trace的使用

背景&#xff1a; 近期很多开发者反馈OpenHarmony三方库Imageknife有性能问题&#xff1a;连续拖动很多张图片时&#xff0c;界面有明显的卡顿现象。 因为对这个三方库的源码并不了解&#xff0c;因此需要了解目前Imageknife渲染花费了多少时间&#xff0c;最初想的是只有通过…

不愧是疑问解决神器!你强任你强

不愧是疑问解决神器&#xff01;你强任你强&#x1f44d;&#x1f44d;&#x1f44d; 在过去&#xff0c;我习惯用这种方式来阅读书籍或文章&#xff1a;先快速浏览一遍&#xff0c;然后再进行复读&#xff0c;并最终总结所学的知识点。然而&#xff0c;长期以来&#xff0c;我…

VMware中虚拟机没网

VMware中虚拟机没网 1 打开服务2 还原虚拟机网络设置 1 打开服务 2 还原虚拟机网络设置 ————————————————————— 以上就是今日博客的全部内容了 创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.

scrapy爬取图片

文章目录 ImagesPipeline使用步骤&#xff1a;1. 数据解析&#xff1a; 获取图片的地址 & 2. 将存储图片地址的item提交到指定的管道类&#xff08;hotgirls.py&#xff09;3. 在管道文件中自制一个基于ImagesPipeLine的一个管道类&#xff01;&#xff01;天大的坑 &#…

Linux常见操作命令(1)

​ 前言&#xff1a;作者也是初学Linux&#xff0c;可能总结的还不是很到位 ♈️今日夜电波&#xff1a;达尔文—林俊杰 0:30━━━━━━️&#x1f49f;──────── 4:06 &#x1f504; ◀️ …