2. CSS选择器与伪类
2.1 基本选择器回顾
在开始介绍CSS3选择器之前,我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。
2.1.1 元素选择器
元素选择器用于选中指定类型的HTML元素。
/* 选中所有的<p>元素 */
p {color: blue;
}
2.1.2 类选择器
类选择器用于选中拥有特定类名的元素。类选择器以句点(.)开头。
/* 选中所有类名为"example"的元素 */
.example {color: red;
}
2.1.3 ID选择器
ID选择器用于选中拥有特定ID的元素。ID选择器以井号(#)开头。
/* 选中ID为"header"的元素 */
#header {background-color: green;
}
2.1.4 后代选择器
后代选择器用于选中某个元素的所有后代元素。
/* 选中所有在<div>内的<p>元素 */
div p {color: purple;
}
2.1.5 组选择器
组选择器用于选中多个选择器对应的元素。
/* 选中所有的<h1>和<p>元素 */
h1, p {margin: 0;
}
2.2 CSS3新增选择器
CSS3引入了许多新选择器,使得选择元素更加精确和灵活。
2.2.1 属性选择器
属性选择器允许你根据元素的属性及其值来选中元素。
/* 选中所有属性包含"example"的元素 */
a[href*="example"] {color: red;
}/* 选中所有属性以"example"结尾的元素 */
a[href$="example"] {color: blue;
}/* 选中所有属性以"example"开头的元素 */
a[href^="example"] {color: green;
}
2.2.2 目标伪类选择器
:target
选择器用于选中当前活动的锚点目标。
/* 当链接目标被选中时改变其样式 */
:target {background-color: yellow;
}
2.2.3 :nth-child()
选择器
:nth-child()
选择器允许开发者选中特定的子元素。
/* 选中每个第二个子元素 */
li:nth-child(2n) {background-color: lightgray;
}/* 选中每个第三个同类型的子元素 */
li:nth-of-type(3n) {color: blue;
}
2.3 伪类与伪元素
伪类和伪元素是CSS的重要特性,用于选择不可见的元素或元素的某一部分。
2.3.1 伪类
伪类用于选中元素的特定状态。
/* 选中鼠标悬停时的元素 */
a:hover {color: orange;
}/* 选中获得焦点的输入框 */
input:focus {border-color: blue;
}
2.3.2 伪元素
伪元素用于选择元素的一部分,如首字母或内容前后的位置。
/* 选中<p>元素的首字母 */
p::first-letter {font-size: 2em;color: red;
}/* 在每个<p>元素的内容前插入内容 */
p::before {content: "Note: ";font-weight: bold;
}
2.4 选择器的优先级与最佳实践
选择器的优先级决定了当多个选择器匹配同一个元素时,哪个选择器的样式会被应用。了解选择器的优先级对编写高效的CSS代码非常重要。
2.4.1 选择器优先级规则
优先级由四个部分组成,从高到低依次是:内联样式、ID选择器、类选择器/属性选择器/伪类、元素选择器/伪元素。
/* 内联样式优先级最高 */
<style><div style="color: red;">内联样式</div>
</style>/* ID选择器 */
#id {color: blue; /* 优先级为 0, 1, 0, 0 */
}/* 类选择器 */
.class {color: green; /* 优先级为 0, 0, 1, 0 */
}/* 元素选择器 */
div {color: yellow; /* 优先级为 0, 0, 0, 1 */
}
2.4.2 注意事项
- 避免过度使用ID选择器:ID选择器优先级很高,不易覆盖,尽量使用类选择器。
- 结构清晰:确保CSS代码结构清晰,选择器简洁易懂。
- 使用后代选择器谨慎:后代选择器的优先级较高,过多使用会导致样式难以维护。
- 利用浏览器开发工具:使用浏览器开发工具(如Chrome DevTools)来调试和查看选择器优先级。
2.5 选择器的优先级与最佳实践
选择器的优先级决定了当多个选择器匹配同一个元素时,哪个选择器的样式会被应用。了解选择器的优先级对编写高效的CSS代码非常重要。
2.5.1 选择器优先级规则
优先级由四个部分组成,从高到低依次是:内联样式、ID选择器、类选择器/属性选择器/伪类、元素选择器/伪元素。
/* 内联样式优先级最高 */
<style><div style="color: red;">内联样式</div>
</style>/* ID选择器 */
#id {color: blue; /* 优先级为 0, 1, 0, 0 */
}/* 类选择器 */
.class {color: green; /* 优先级为 0, 0, 1, 0 */
}/* 元素选择器 */
div {color: yellow; /* 优先级为 0, 0, 0, 1 */
}
2.5.2 注意事项
- 避免过度使用ID选择器:ID选择器优先级很高,不易覆盖,尽量使用类选择器。
- 结构清晰:确保CSS代码结构清晰,选择器简洁易懂。
- 使用后代选择器谨慎:后代选择器的优先级较高,过多使用会导致样式难以维护。
- 利用浏览器开发工具:使用浏览器开发工具(如Chrome DevTools)来调试和查看选择器优先级。
相关文章:
2. CSS选择器与伪类
2.1 基本选择器回顾 在开始介绍CSS3选择器之前,我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。 2.1.1 元素选择器 元素选择器用于选中指定类型的HTML元素。 /* 选中所有的<p>元素 */ p {color: blue; }2.1.2 类选择器 类选择器用于选中…...

tcpdump源码分析
进入tcpdump.c(函数入口)之前,先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作,每一个参数有对应的flag, 在tcpdump 的main 里面, 会根据用户的传入的参数来…...

搭建Harbor镜像仓库
前言 1、系统版本:CentOS9 2、harbor版本:v2.9.4 3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1 安装步骤 下载安装包 1、下载地址:ha…...

【C/C++】Makefile文件的介绍与基本用法
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c系列专栏:C/C零基础到精通 🔥 给大…...

PHP生成二维码+二维码包含logo图片展示
composer require chillerlan/php-qrcode 用到的扩展自己安装(注:只生成二维码只要开gd扩展就行) 仅生成二维码看这个: use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…...

vue项目打包教程
如果是用 vue-cli 创建的项目,则项目目录中没有 config 文件夹,所以我们需要自建一个配置文件;在vue项目目录下创建文件 vue.config.js,需注意文件名称必须是 vue.config.js,然后在文件中插入以下代码: 文件…...

制作电子画册速成攻略,快来试试
当今社会,数字媒体日益普及,电子画册作为一种崭新的展示方式,受到了越来越多人的青睐。它不仅形式新颖,互动性强,而且制作起来也并不复杂。想知道如何快速掌握制作电子画册的技巧吗?我来教你吧。 接下来&…...
【java程序设计期末复习】chapter7 内部类和异常类
内部类和异常类 内部类 ava支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 注意 (1)内部类的类体中不可以声明类变量和类方法。 (2)外嵌类的类体中可以用内部类…...

Windows下安装配置深度学习环境
Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…...

如何使用ssh将vscode 连接到服务器上,手把手指导
一、背景 我们在开发时,经常是window上安装一个vscode编辑器,去连接一个虚拟机上的linux,这里常用的是SSH协议,了解其中的操作非常必要。 二、SSH协议 SSH(Secure Shell)是一种安全协议,用于…...
Tomcat调优参数
JVM优化 Tomcat是一个Web容器,所有的jar其实都共享Tomcat中的JVM参数,所以Tomcat的JVM参数优化至关重要。 Tomcat的JVM参数是在启动脚本中设置的,如想要设置最大堆内存和最小堆内存时: 在windows的启动脚本catalina.bat中的set &q…...

云计算和大数据处理
文章目录 1.云计算基础知识1.1 基本概念1.2 云计算分类 2.大数据处理基础知识2.1 基础知识2.3 大数据处理技术 1.云计算基础知识 1.1 基本概念 云计算是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无…...

VAE-变分自编码器(Variational Autoencoder,VAE)
变分自编码器(Variational Autoencoder,VAE)是一种生成模型,结合了概率图模型与神经网络技术,广泛应用于数据生成、表示学习和数据压缩等领域。以下是对VAE的详细解释和理解: 基本概念 1. 自编码器&#…...
Android Room 使用模版
文章目录 一、配置依赖 plugins {id kotlin-kapt }android {compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget 17} }dependencies {implementation("androidx.room:room-runtime:2.4.2&…...

Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定
相信很多人都有远程连接家中设备的需求,如远程连接家中的NAS、Windows等服务,所以会涉及到一个内网穿透工具的使用,如果没有公网IP的情况下,推荐大家使用ZeroTier,这是一款强大的内网穿透工具。 mac和windows版的操作…...

java技术:oauth2协议
目录 一、黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权详解 1、oauth服务 WebSecurityConfig TokenConfig AuthorizationServer 改写密码校验逻辑实现类 2、oauth2支持的四种方式: 3、oauth2授权 ResouceServerConfig TokenConfig 4、…...
Java 18 新特性详解
Java 18 新特性详解 Java 18 作为 Oracle 推出的又一重要版本,继续秉持着 Java 平台“创新但不破坏”的原则,带来了多项旨在提升开发效率、性能和安全性的新特性。本篇文章将深入解析 Java 18 引入的主要特性,并探讨它们如何影响开发者的工作…...

【css3】06-css3新特性之网页布局篇
目录 伸缩布局或者弹性布局【响应式布局】 1 设置父元素为伸缩盒子 2 设置伸缩盒子主轴方向 3 设置元素在主轴的对齐方式 4 设置元素在侧轴的对齐方式 5 设置元素是否换行显示 6 设置元素换行后的对齐方式 7 效果测试原码 伸缩布局或者弹性布局【响应式布局】 1 设置父元…...

【开源】大学生竞赛管理系统 JAVA+Vue+SpringBoot+MySQL
目录 一、系统介绍 学生管理模块 教师管理模块 竞赛信息模块 竞赛报名模块 二、系统截图 三、核心代码 一、系统介绍 基于Vue.js和SpringBoot的大学生竞赛管理系统,分为管理后台和用户网页端,可以给管理员、学生和教师角色使用,包括学…...

跨境选品师不是神话:普通人也能轻松掌握,开启全球贸易新篇章!
随着互联网技术的飞速发展,跨境电商行业已成为全球经济的新增长点。在这个背景下,一个新兴的职业——跨境选品师,逐渐走进了人们的视野。那么,跨境选品师究竟是做什么的?普通人又该如何成为优秀的跨境选品师呢? 一、跨境选品师的…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...