CSS3新增选择器(属性选择器、结构伪类选择器、伪元素选择器)

news2024/10/7 0:27:49

1 属性选择器

属性选择器([属性])可以根据元素的属性和属性值来对符合要求的元素进行选择。

属性选择器的基础语法如下表:

语法说明
标签[属性] {}选择有目标属性的标签
标签[属性="value"] {}选择有目标属性且属性值为"value"的标签
标签[属性^="x"] {}选择有目标属性且属性值以"x"开头的标签
标签[属性$="x"] {}选择有目标属性且属性值以"x"结尾的标签
标签[属性*="x"] {}选择有目标属性且属性值包含"x"的标签

举两个实例:

① input[value] {} :选择具有value属性的input标签

② input[value="123"] {} :选择value属性值为"123"的input标签

注意事项:

(1)属性选择器(即[属性])的权重是0,0,1,0;

(2)标签[属性] 的权重是标签权重+属性选择器权重。

2 结构伪类选择器(上)

首先是第一类常用的结构伪类选择器,这类选择器常用于根据父级选择器来选择里面的子元素。

基础语法如下表:

语法说明
E:first-child选择父元素中的第一个子元素,若该元素为E,则选中,否则选择器不生效
E:last-child选择父元素中的最后一个子元素,若该元素为E,则选中,否则选择器不生效
E:nth-child(n)根据n来选择父元素中的子元素,若选中的子元素为E,则选中,否则选择器不生效

注意,这类选择器的选择步骤如下:

(1)先给所有子元素从1开始进行编号;

(2)根据选择器来进行选择。如:E:first-child就选择第一个子元素,如果这个子元素是E的话,那么就选中了;但如果第一个子元素不是E的话,那么这类选择器就不会生效。

总之,这类选择器是“先编号,再选择,选择的元素为E,则选中”。

可能语法太模糊?上实例:

① ul li:first-child :选择 ul 下的第1个子元素,若该元素为li,则选中该元素,否则不生效;

② ul li:nth-child(6)  :选择 ul 下的第6个子元素,若该元素为li,则选中该元素,否则不生效;

③ ul li:nth-child(2n) :选择 ul 下的所有第偶数个子元素(2n即为偶数),若其为 li 则选中。

接着,这里还要对E:nth-child(n)这一基本语法按照 n 的分类进行详细的说明:

E:nth-child(n)中 n 的类型说明(选中的子元素为E则生效)
数字选择第n个子元素
关键字"even"选择所有第偶数个子元素
关键字"odd"选择所有第奇数个子元素
公式根据公式进行选择。注意:公式中的 n 从0开始计算,但子元素是从1开始计数的,因此第0个子元素是不存在的

当E:nth-child(n)中 n 的类型为“公式”时,提供以下实例供理解(n 从0开始计算):

选择器说明(选中的子元素为E则生效)
E:nth-child(n)选择从第0个开始的所有子元素
E:nth-child(n+3)选择从第3个开始的所有子元素
E:nth-child(2n)选择所有第偶数个子元素
E:nth-child(2n+1)选择所有第奇数个子元素
E:nth-child(-n+3)选择前3个子元素

实际上,在日常使用中,由于nth-child(n)会给所有子元素进行编号(不管是不是E),因此E:nth-child(n) 中 n 的值和 E 作为子元素的位置往往是对应的(这样选择器才会生效)。

3 结构伪类选择器(下)

接着是第二类常用的结构伪类选择器,这类选择器也用于根据父级选择器来选择里面的子元素,但和第一类有些差别。

基础语法如下表:

语法说明
E:first-of-type选择父元素中的第一个子元素E
E:last-of-type选择父元素中的最后一个子元素E
E:nth-of-type(n)根据n来选择父元素中的子元素E

注意,这类选择器的选择步骤如下:

(1)先给所有子元素E从1开始进行编号;

(2)根据选择器来进行选择。如:E:first-of-type就选择第一个子元素E。

直接上实例:

① div p:first-of-type :选择 div 下的第1个子元素p;

② div p:nth-of-type(2) :选择 div 下的第2个子元素p。

4 结构伪类选择器的比较

结构伪类选择器说明
不同点:first-child、:last-child、:nth-child(n)先给所有子元素编号,再选择,选中若是E则选择器有效,否则无效
:first-of-type、:last-of-type、:nth-of-type(n)先给所有子元素E编号,再选择,选中一定是E
共同点结构伪类选择器(如: first-child)的权重是0,0,1,0E:first-child的权重是 E 的权重 + 0,0,1,0

5 伪元素选择器

伪元素选择器可以利用css创建新标签,简化HTML结构。

伪元素选择器的基础语法如下表:

语法说明
E::before在元素E内部的前面插入内容
E::after在元素E内部的后面插入内容

需要注意的地方如下:

(1)创建的标签属于行内元素;

(2)新创建的元素在文档树中找不到;

(3)before和after必须有content属性;

(4)伪元素选择器(::before 和 ::after)权重为0,0,0,1。

提供一个实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <title>Document</title>
    <style>
        div::before{
            content: "前面的";
        }
        div::after{
            content: "后面的";
        }
    </style>
</head>
<body>
    <div>
        选择器
    </div>
</body>
</html>

页面效果如下:

可见,通过伪元素选择器,div元素中的文字“选择器”前后分别添加了文字“前面的”和“后面的”,这就是::before和::after的基础用法。

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

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

相关文章

iOS--通知、代理、单例模式总结

通知 概要 观察者和被观察者都无需知晓对方&#xff0c;只需要通过标记在NSNotificationCenter中找到监听该通知所对应的类&#xff0c;从而调用该类的方法。并且在NSNotificationCenter中&#xff0c;观察者可以只订阅某一特定的通知&#xff0c;并对齐做出相应操作&#xf…

管理类联考——数学——记忆篇——不同角度解读——四、数据分析——1.计数原理/排列组合

计数原理 1.计数原理 1.1 加法原理、乘法原理 1.2 排列与排列数 1.3 组合与组合数 PS&#xff1a;图标说明 ⛲️&#xff1a;陈jian &#x1f475;&#xff1a;鑫quan &#x1f469;&#xff1a;张紫chao &#x1f482;&#xff1a;MBA大shi &#x1f63d;&#xff1a;海mian…

小程序UV:衡量用户规模与活跃度的重要指标

什么是UV UV是Unique Visitor&#xff08;独立访客&#xff09;的缩写&#xff0c;指的是在特定时间段内访问某个网站、应用或平台的独立用户数量。UV是根据设备、IP地址、Cookie等来识别不同的用户&#xff0c;对于相同的用户多次访问&#xff0c;只计算为一个UV。UV是衡量网…

linux判断端口是否占用(好用)

netstat 一般的话使用 netstat -tunlp | grep xxx参数作用-t指明显示TCP端口-u指明显示UDP端口-l仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)-p显示进程标识符和程序名称&#xff0c;每一个套接字/端口都属于一个程序。-n不进行…

随机数检测(五)

随机数检测&#xff08;五&#xff09;- 检测工具 1 检测规范2 检测量3 检测项目4 检测工具 1 检测规范 随机数检测应遵循GM/T 0005-2021和GM/T 0062-2018两个标准。 首先根据产品实际情况确定产品类型。 随机数检测量和检测项目可参考GM/T 0062-2018对不同类型产品的要求。不…

C++类与对象 - 2(构造函数和析构函数)(超详细)

构造函数和析构函数 - 超详细讲解 1. 构造函数1.1 概念1.2特性 2. 析构函数2.1 概念2.2特性 1. 构造函数 1.1 概念 对于以下Date类&#xff1a; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <&l…

7p透明屏的制造过程复杂琐屑吗?

7p透明屏是一种新型的显示技术&#xff0c;它可以使屏幕变得透明&#xff0c;让用户可以透过屏幕看到背后的物体。这种技术在科幻电影中经常出现&#xff0c;但现在已经成为现实。 7p透明屏的工作原理是利用液晶显示技术和透明材料。液晶显示技术是一种通过控制液晶分子的排列…

Android 之 动画合集之帧动画

本节引言&#xff1a; 从本节开始我们来探究Android中的动画&#xff0c;毕竟在APP中添加上一些动画&#xff0c;会让我们的应用变得 很炫&#xff0c;比如最简单的关开Activity&#xff0c;当然自定义控件动画肯定必不可少啦~而Android中的动画 分为三大类&#xff0c;逐帧动画…

“xAI正式成立,GPT大战重燃,AI大模型的现状与发展怎么看?“

文章目录 每日一句正能量前言“反AI斗士”马斯克进军AI&#xff0c;你怎么看&#xff1f;回顾上半年的“百模大战”&#xff0c;中国的AI产业怎么样了&#xff1f;AI大模型这把火&#xff0c;还能怎么烧&#xff1f;后记 每日一句正能量 世界上最有力的一句话&#xff0c;不是给…

探索UCI心脏病数据:利用R语言和h2o深度学习构建预测模型

一、引言 随着机器学习模型在实际应用中的广泛应用&#xff0c;人们对于模型的解释性和可理解性日益关注。可解释性机器学习是指能够清晰、透明地解释机器学习模型决策过程的一种方法和技术。在许多领域中&#xff0c;如医疗诊断、金融风险评估和自动驾驶等&#xff0c;解释模型…

【沐风老师】3DMAX自动材质插件使用方法教程

3DMAX自动材质插件使用方法教程 3DMAX自动材质工具用于在将纹理加载到3dsax中时快速创建简单的材质&#xff0c;并具有一些很酷的材质功能。 这个插件可以根据真正制造商的纹理&#xff08;通常比例为2:1&#xff09;快速创建简单的木材材质&#xff0c;并根据板材的长度自动对…

<MySQL>建表SQ和CRUD SQ脚本案例二

1. MySQL 建表SQ脚本案例&#xff1a; 地域表 CREATE TABLE xxx_region_list_dic (seqId INT(11) NOT NULL AUTO_INCREMENT,sortId INT(11) DEFAULT NULL,name VARCHAR(255) NOT NULL COMMENT 地域,code VARCHAR(25) NOT NULL COMMENT 编码,isEnable VARCHAR(25) DEFAULT NULL…

图文教程:使用 Photoshop、3ds Max 和 After Effects 创建被风暴摧毁的小屋

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 在 Photoshop 中设置图像 步骤 1 打开 Photoshop。 打开 Photoshop 步骤 2 我已经将小屋的图像导入到Photoshop中以演示 影响。如果您愿意&#xff0c;可以使用其他图像。 图片导入 步骤 3 由于小…

filfox 通过接口获取

通过filfox接口获取24小时出块奖励 ╰─➤ curl https://filfox.info/api/v1/address/f01889512/mining-stats\?duration\24h | jq .% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed 100 346…

Java面向对象的学习

由于类和对象这一部分的知识点&#xff0c;比较难&#xff0c;而且涉及的知识点很广、也很杂&#xff0c;在这里&#xff0c;单独作为一个知识点来学习。我会通过不同的视频&#xff0c;不同的资料&#xff0c;根据不同的特点来学这个方面的知识点。 一、理解什么是类和对象。 …

let definitions are not supported by current javascript——前端笔记

idea中报的错&#xff0c;解决办法就是改一下javascript在idea中的配置。 本文来自&#xff1a;https://blog.csdn.net/fgx_123456/article/details/77825499

Simulink仿真模块 - Demux

Demux:提取并输出虚拟向量信号的元素 在仿真库中的位置为:Simulink / Commonly Used Blocks Simulink / Signal Routing HDL Coder / Commonly Used Blocks HDL Coder / Signal Routing 模型为: 说明 Demux 模块提取输入向量信号的分量,再将它们输出为单独的信号。输出信号…

Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!

MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c;无需学习任何新的开发语言和工具&#xff0c;便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发&#xff1b;强大的智能代码补齐功能&#xff0c;让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …

linux下用docker安装mysql

1.mysql Docker镜像 docker pull mysql:[版本号 或 latest]例&#xff1a;docker pull mysql:5.7 2.查看拉取的docker镜像 docker images3.设置 Docker 卷 docker volume create mysql-data列出 Docker 已知的所有卷 docker volume ls4.运行一个 MySQL Docker 容器 docke…

windows 安装 mongodb 数据库

软件下载 访问官方的下载地址&#xff1a; https://www.mongodb.com/try/download/community &#xff0c;然后选择对应的版本进行下载 下载好了之后双击进行安装 软件安装 1、点击 next 点击下一步 2、勾选接受协议&#xff0c;点击 next 3、第三页有两个选项&#x…