CSS常用十大选择器(理论+代码实操)

HTML代码实例

注意:拷贝后本地运行注意head标签中的link标签的href属性是否正确

我的目录结构:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="../css/selector.css"></head><body><!--元素选择器--><a href="https://www.baidu.com/">这是一个a标签</a><!--id选择器--><div id="aa">aa-div</div><!--类选择器--><div class="AA">AA-div1</div><div class="AA">AA-div2</div><!--属性选择器--><br><br><em lang="en" class="em1">english</em><br><br><em lang="zh" class="em1">中文</em> <br><br><em lang="fr">french</em><br><br><em lang="ru">ruissa</em><br><br><!--包含选择器--><div class="BB0"><p>1111</p><div><p class="BB2">BB-div内部的p</p></div></div><p class="BB">BB-div外部的p</p><!--子选择器--><table class="TB"><thead><tr><th>1</th><th>2</th><th id="th">3</th><th>4</th><th>5</th></tr></thead><tbody><tr><th>1-1</th><th>1-2</th></tr><tr><th>2-1</th><th>2-2</th></tr></tbody></table><!--兄弟选择器--><ol><li>早睡早起</li><li class="BRO">多吃蔬菜</li><li>心情舒畅</li><li>多多运动</li></ol><!--伪类选择器--><a class="weiLei" href="https://www.tencent.com/zh-cn/index.html">腾讯官网</a><!--伪元素选择器--><div>伪元素选择器------所有div元素的第一个汉字放大,加粗,红色</div></body>
</html>

元素选择器

直接用html标签命名,对整个html文档的全部此标签生效

/*元素选择器*/
a {/*对所有的a标签生效*/font-size: 22px;color: brown;
}

在这里插入图片描述

id选择器

#+id名称,根据标签的id属性进行选择,id由用户自定义,建议保证唯一性

所有标签都具有id属性

在这里插入图片描述

/*id选择器*/
#aa {background: aquamarine;
}

在这里插入图片描述
首字母字号变大+红色是伪元素选择器的效果,我们稍后就讲

class选择器

.+class名称使用,根绝标签的class属性选择

所有的标签都有class属性

在这里插入图片描述

.AA {width: 500px;height: 200px;background: antiquewhite;
}

在这里插入图片描述

属性选择器

标签名[属性名],可以根据属性值进行多种类型的匹配
在这里插入图片描述

/*1. 是否存在*/
em[lang] {color: red;
}/*2. 属性=“”*/
em[lang="zh"] {font-size: 100px;
}
/* class属性的=可以简写*/
em.em1 {font-weight: bolder;
}/*3. 属性以“”开头*/
em[lang^="e"] {background: greenyellow;
}/*4. 属性包含“”*/
em[lang*=r] {font-size: 50px;font-weight: lighter;
}/*5. 属性以“”结尾*/
em[lang$="u"] {color: cornflowerblue;}

属性是否存在

所有em标签中lang属性不为空的,字体都会变成红色

在这里插入图片描述

russia被其他效果覆盖了,其实原本也是红色

属性 = xxx

em标签中,lang标签 = zh的标签也是有的,“中文”变成了100像素大小

如果选中的属性是class属性,em[class = xxx]可以简写为em.xxx

属性以xxx开始

en属性值以e开始,所以背景变成了黄绿色

属性包含xxx

fr属性和ru属性都包含r,所以他们两个都会变成50px字号+字体更细

属性以xxx结尾

ru属性值以u结尾,所以字体颜色会变成天蓝色,覆盖掉之前的红色

包含选择器

不严格的父子关系,只要包括即可

中间的空格不写,很容易与属性选择器中的属性 = xxx的class属性简写的情况搞混,千万要注意是否有空格
在这里插入图片描述

/*包含选择器,不严格的父子关系*/
.BB0 p {width: 150px;height: 100px;background: aqua;}

在这里插入图片描述
我们可以看到class为BB0的标签内部的所有p标签都生效了,也就是说对儿子和孙子都生效,都变成了aqua颜色的背景,同时宽高也被调整

父子选择器

严格的父子关系,孙子不会生效

在这里插入图片描述

/*子选择器,严格的父子关系*/
/*TB只是装饰,父子选择器在下面*/
.TB {border: 5px solid blue;
}/*父子关系不严格,不生效*/
.TB > tr > th {background: black;
}/*父子关系严格,生效,所有的孩子都会生效*/
.TB > thead > tr > th {border: 2px solid black;
}

在这里插入图片描述
不严格的父子关系没生效(表头的背景为黑色没生效)

严格的父子关系生效了(黑色的边框线)

兄弟选择器

分为一般兄弟选择器和紧邻兄弟选择器

一般兄弟选择器

用~连接兄弟,从基准选择器开始,向下识别它的所有兄弟元素(不包括基准选择器)

紧邻兄弟选择器

用+连接兄弟选择器,从基准选择器开始,向下识别它的第一个兄弟元素(不包括基准选择器

在这里插入图片描述

/*兄弟选择器*/
/*基准选择器~基准选择器的兄弟选择器*//*一般兄弟选择器*/
/*从基准选择器开始,向下识别它的所有对应的兄弟元素*/
.TB > thead > tr > #th ~ th {background: green;
}/*紧邻兄弟选择器*/
/*从基准选择器开始,向下识别它的紧邻的一个兄弟元素*/
.BRO + li {font-style: italic;color: orangered;}

在这里插入图片描述

在这里插入图片描述

我们可以看到表头的id为th的th元素的后面的所有兄弟th元素都匹配到了,背景颜色变成了green(一般兄弟选择器

我们还可以看到class属性为BRO的li元素的下一个兄弟li元素被匹配,字体变成了斜体,颜色为橘红色(紧邻兄弟选择器

组合选择器

其实就是各种选择器的排列组合,不同的选择器用逗号隔开

/*组合选择器*/
/*不同的选择器,用逗号隔开,表示设置相同的属性*/.BB0 p, .TB > thead > tr > th {/*包含选择器,父子选择器*/width: 200px;height: 300px;background: blueviolet;
}

在这里插入图片描述
对应部分的背景颜色都变成了紫色

伪类选择器&&伪元素选择器

伪,假装的意思;
好像有这个类,但实际上没有
好像有这个元素,但实际没有

伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于html文档之外的抽象,所以叫伪类。

伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于html文档之中,所以叫伪元素。

实际使用有很多伪选择器,比如anchor伪类,:before,:after,:focus等,详见

CSS 伪类 | 菜鸟教程 (runoob.com)

CSS 伪元素 | 菜鸟教程 (runoob.com)

demo

在这里插入图片描述

/*伪类选择器*//*anchor伪类*/
.weiLei:hover {color: gray;
}/*first-child 伪类*//*:focus伪类。*//*伪元素选择器*/div:first-letter {font-size: 36px;color: red;font-weight: bolder;
}

在这里插入图片描述
div元素的第一个汉字确实都更大
在这里插入图片描述

鼠标悬停时,腾讯官网字体颜色变成了灰色

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

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

相关文章

React + 项目(从基础到实战) -- 第六期

引入ant design ui ui 组件库介绍 组件总览 - Ant Design (antgroup.com) 安装 - Material-UI (mui.com) Tailwind UI - Official Tailwind CSS Components & Templates 引入antd Ant Design of React - Ant Design 常用组件 // 引入antd 美化import { Layout } from a…

详解拷贝构造

拷贝构造的功能 写法&#xff1a; 拷贝构造函数的参数为什么是引用类型 系统自动生成的拷贝构造函数 拷贝构造的深拷贝与浅拷贝 概念 浅拷贝&#xff1a; 深拷贝 小结 拷贝构造的功能 拷贝构造函数可以把曾经实例化好的对象的数据拷贝给新创建的数据 &#xff0c;可见…

ASP.NET基于BS的计算机等级考试系统的设计与实现

摘 要 随着计算机技术的发展及计算机的日益普及&#xff0c;基于B/S结构的考试系统与无纸化办公一样已成为大势所趋。论文详细论述了一个基于B/S结构的计算机等级考试系统的设计过程。软件采用ASP.NET 2005作开发平台&#xff0c;C#作编程语言&#xff0c;SQL Server 2005作…

网络安全从入门到精通(特别篇I):Windows安全事件应急响应之Windows应急响应基础必备技能

Windows应急 询问攻击情况范围 事件发生时的状况或安全设备告警等,能帮助应急处置人员快速分析确定事件类型,方便前期准备。 通用排查思路 入侵肯定会留下痕迹,另外重点强调的是不要一上来就各种查查查,问清楚谁在什么时间发现的主机异常情况,异常的现象是什么,受害用…

【DNS】

文章目录 DNS域名解析系统&#xff08;Domain Name System&#xff09;DNS系统需要解决的问题DNS域名解析系统&#xff08;Domain Name System&#xff09;问题1&#xff1a;DNS名字空间(The DNS Name Space&#xff09;DNS名字空间(The DNS Name Space)DNS名字空间(The DNS Na…

边缘计算【智能+安全检测】系列教程--使用OpenCV+GStreamer实现真正的硬解码,完全消除马赛克

通过现有博客的GST_URL = "rtspsrc location=rtsp://admin:abcd1234@192.168.1.64:554/h264/ch01/main/av_stream latency=150 ! rtph264depay ! avdec_h264 ! videorate ! videoconvert ! appsink sync=false" GStreamer的解码方式解码,大多情况应该存在上图马赛克…

解决jenkins运行sh报process apparently never started in XXX

个人记录 问题 process apparently never started in /var/jenkins_home/workspace/ks-springboot_mastertmp/durable-bbfe5f99(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICStrue might make the problem cl…

架构师系列-搜索引擎ElasticSearch(八)- 集群管理故障恢复

故障转移 集群的master节点会监控集群中的节点状态&#xff0c;如果发现有节点宕机&#xff0c;会立即将宕机节点的分片数据迁移到其它节点&#xff0c;确保数据安全&#xff0c;这个叫做故障转移。 下图中node1是主节点&#xff0c;其他两个节点是从节点 节点故障 此时node1…

卷积神经网络(LeNet5实现对Fashion_MNIST分类

参考6.6. 卷积神经网络&#xff08;LeNet&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) ps&#xff1a;在这里预备使用pythorch 1.对 LeNet 的初步认识 总的来看&#xff0c;LeNet主要分为两个部分&#xff1a; 卷积编码器&#xff1a;由两个卷积层组成; …

【蓝桥杯】(完全日期)

完全日期 #include <iostream> using namespace std; int main() {int ans0;//2001 1 1 //2021 12 31int monthday[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};for(int year2001;year<2021;year){monthday[2]28;if((year%40&&year%100!0)||year%4000)month…

OLTP 与 OLAP 系统说明对比和大数据经典架构 Lambda 和 Kappa 说明对比——解读大数据架构(五)

文章目录 前言OLTP 和 OLAPSMP 和 MPPlambda 架构Kappa 架构 前言 本文我们将研究不同类型的大数据架构设计&#xff0c;将讨论 OLTP 和 OLAP 的系统设计&#xff0c;以及有效处理数据的策略包括 SMP 和 MPP 等概念。然后我们将了解经典的 Lambda 架构和 Kappa 架构。 OLTP …

嵌AR/VR开发教程和案例

一、AR/VR概述 增强现实&#xff08;Augmented Reality&#xff0c;简称AR&#xff09;和虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;是近年来备受关注的技术领域。AR是在现实世界的基础上&#xff0c;通过计算机技术将虚拟信息叠加到现实世界中&…

无线通信:多输入多输出(MIMO)

什么是MIMO MIMO&#xff08;Multi Input Multi Output&#xff09;即多输入多输出&#xff0c;通过采用空间复用技术&#xff0c;在几条链路&#xff08;可以理解为几个天线&#xff09;中传输不同的数据码流&#xff0c;成倍地提高数据吞吐量&#xff08;速率&#xff09;。…

振兴国腾GM8775C MIPIDSI桥接到双 PORT LVDS

GM8775C描述&#xff1a; GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单 / 双通道 LVDS 功能&#xff0c;MIPI 支持 1/2/3/4 通道可选&#xff0c;每通道最高支持 1Gbps 速率&#xff0c;最大支持 4Gbps 速率。LVDS 时钟频率高达 154MHz &a…

实现文章内容过多时的展开收起效果

通过计算文章内容的高度来确定是否需要显示展开按钮&#xff0c;然后根据用户的点击来展开或收起文章内容。以下是一个简单的实现示例&#xff1a; <template><div class"article"><div v-if"isContentOverflow" :style"{ maxHeight:…

Python远程将文本、音频等数据写入Mysql或Redis附上云策略

Python远程将文本、音频等数据写入Mysql或Redis附上云策略 将文本、音频等数据存入MySQL或Redis,需要使用相应的数据库驱动和数据类型。 本篇分别针对MySQL和Redis的存储方法进行总结,附云存储策略: 1. 存入MySQL 1.1 文本数据入库 文本数据(例:TXT)可以直接作为字符串…

Vue列表渲染

一、Vue列表渲染 1.用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法&#xff0c;其中 items 是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 <ul id"exampl…

Facebook广告投放数据API对接流程

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、需求背景 App在Facebook、Google等巨头进行广告投放&#xff0c;想要拿到实时广告投放效果数据&#xff0c;如曝光、点击、花费、触…

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

4-安装并配置Grafana并导入特定的仪表板模板

要安装并配置Grafana并导入特定的仪表板模板&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 安装Grafana 首先&#xff0c;确保你的系统中已安装了 yum&#xff0c;这通常是CentOS或RHEL及其衍生版本中的包管理器。然后&#xff0c;运行以下命令来安装Grafana Enterpris…