css常用的选择器介绍

        CSS(层叠样式表)选择器是CSS规则的一部分,它用于选择和定位网页上的元素,以便将样式应用到这些元素上。CSS选择器的种类繁多,每种选择器都有其特定的用途、特点和效率。在这篇文章中,我们将讨论一些常用的CSS选择器,以及它们的优先级和性能。


        常用的CSS选择器
        1. **通用选择器(Universal Selector)**
   通用选择器(`*`)匹配文档中的所有元素。它没有特定性,优先级最低。

* {margin: 0;padding: 0;}


        2. **元素/类型选择器(Type Selector)**
   元素选择器匹配文档中所有指定类型的元素。

p {font-size: 16px;}


        3. **类选择器(Class Selector)**
   类选择器匹配具有特定类名的所有元素。类名前面有一个点(`.`)。

.error {color: red;}


        4. **ID选择器(ID Selector)**
   ID选择器匹配具有特定ID属性值的元素。ID名前面有一个井号(`#`)。

#header {background-color: #333;}


        5. **属性选择器(Attribute Selector)**
   属性选择器根据元素的属性及其值来匹配元素。

a[href="https://example.com"] {color: blue;}


        6. **后代选择器(Descendant Selector)**
   后代选择器匹配指定元素的后代元素。

div p {text-indent: 2em;}


        7. **子选择器(Child Selector)**
   子选择器匹配指定元素的直接子元素。

div > p {text-indent: 2em;}


        8. **相邻同胞选择器(Adjacent Sibling Selector)**
   相邻同胞选择器匹配紧接在指定元素后的同级元素。

h1 + p {margin-top: 0;}


9. **通用同胞选择器(General Sibling Selector)**
   通用同胞选择器匹配指定元素后的所有同级元素。

h1 ~ p {font-size: 14px;}


10. **伪类选择器(Pseudo-class Selector)**
    伪类选择器匹配处于特定状态或位置的元素。

a:hover {text-decoration: underline;}


11. **伪元素选择器(Pseudo-element Selector)**
    伪元素选择器用于选择元素的特定部分。

p::first-line {font-weight: bold;}


        不同选择器的特点
- **通用选择器**:适用于快速重置默认样式,但由于其匹配范围太广,应谨慎使用以避免性能问题。
- **元素/类型选择器**:简单直观,适用于基础样式定义。
- **类选择器**:可重用性强,适用于多个相似元素的样式定义。
- **ID选择器**:具有唯一性,适用于页面中唯一的元素或组件。
- **属性选择器**:灵活,可以根据元素的属性值来定义样式。
- **后代选择器**:适用于层级较深的元素样式定义。
- **子选择器**:比后代选择器更具体,只选择直接子元素。
- **相邻同胞选择器**:选择特定元素后的第一个同级元素。
- **通用同胞选择器**:选择特定元素后的所有同级元素。
- **伪类选择器**:用于定义元素状态变化的样式。
- **伪元素选择器**:用于选择和样式化文档中的特定部分。
        选择器的效率
        CSS选择器的效率主要取决于浏览器如何解析和匹配这些选择器。一般来说,选择器的效率从高到低可以大致排序如下:
1. **ID选择器**:最快,因为ID在页面中是唯一的。
2. **类选择器**:较快,因为类可以在页面中多次使用。
3. **元素选择器**:中等,因为它们匹配所有相同类型的元素。
4. **伪类选择器**:取决于伪类的类型,如`:hover`通常较快。
5. **属性选择器**:较慢,因为需要检查元素的属性。
6. **后代选择器**:较慢,因为需要遍历DOM树。
7. **子选择器**:较慢,但比后代选择器快,因为它不遍历孙级元素。
8. **相邻同胞选择器**:较慢,因为它需要检查兄弟元素。
9. **通用同胞选择选择器**:较慢,因为它需要检查所有后续的兄弟元素。
10. **通用选择器**:最慢,因为它匹配页面上的所有元素。
        选择器的优先级
        CSS选择器的优先级决定了当多个规则应用于同一个元素时,哪个规则将最终被应用。CSS优先级由四个部分组成,按重要性从高到低排列:
1. **重要性(!important)**:当在一个样式声明中使用了`!important`时,该声明将覆盖其他所有声明。
2. **内联样式**:直接在HTML元素上定义的样式具有最高的优先级。
3. **ID选择器**:ID选择器的优先级高于类选择器和元素选择器。
4. **类选择器、属性选择器、伪类选择器**:类选择器、属性选择器和伪类选择器的优先级高于元素选择器。
5. **元素选择器、伪元素选择器**:元素选择器和伪元素选择器的优先级较低。
6. **通用选择器、后代选择器、子选择器、相邻同胞选择器、通用同胞选择器**:这些选择器的优先级取决于它们的具体组合和位置。
        CSS优先级可以通过特异性(specificity)来量化,特异性是一个四位的数字,每一位代表一种选择器的类型。具体来说,特异性从高到低分别是:ID选择器、类选择器/属性选择器/伪类选择器、元素选择器/伪元素选择器、通用选择器。例如,`.class1 #id1`的特异性是`0111`,而`div p`的特异性是`0011`。
        总结
        CSS选择器是CSS的核心部分,它们允许开发者精确地控制网页上的样式。了解不同选择器的特点和优先级,可以帮助开发者更有效地编写和维护CSS代码。在实际开发中,应该尽量使用简洁、高效的选择器,避免使用过于复杂或低效的选择器,以提高网页的性能和可维护性。
在使用CSS选择器时,还应该注意以下几点:
- **可读性**:选择器应该易于理解,避免过于复杂或晦涩难懂的选择器。
- **可维护性**:选择器应该易于维护和更新,避免过度依赖特定的HTML结构。
- **性能**:选择器应该尽可能高效,特别是在处理大量元素或复杂页面时。
- **优先级**:理解选择器的优先级,避免在样式表中出现不必要的覆盖和冲突。
        通过合理使用CSS选择器,我们可以创建出结构清晰、易于维护且性能优异的样式表,从而为用户提供更好的网页体验。

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

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

相关文章

nginx(三)实现反向代理客户端 IP透传

正常情况下,客户端去访问代理服务器,然后代理服务器再取访问真实服务器,在真实服务器上,只能显示代理服务器的ip地址,而不显示客户端的ip地址,如果想让客户端的ip地址也能在真实服务端看见,这一…

mac/windows git ssh 配置多平台账号(入门篇)

目录 引子多账号多平台配置git一、.ssh文件夹路径1.1 mac 系统1.2 windows 系统 二、生成new ssh2.1 mac系统2.2 windows 系统 三、配置 config四、验证五、用ssh方式拉取远程仓库代码 引子 push代码到github仓库时,提示报错。 Push failed Remote: Support for pa…

深入理解分库、分表、分库分表

前言 分库分表,是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案,所谓"分库分表",根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样,这三个事儿分别是"只…

docker下gitlab安装配置

一、安装及配置 1.gitlab镜像拉取 docker pull gitlab/gitlab-ce:latest2.运行gitlab镜像 docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always --privilegedtrue -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v …

DAY12_VUE基本用法详细版

目录 0 HBuilderX酷黑主题修改注释颜色1 VUE1.1 VUE介绍1.2 Vue优点1.3 VUE入门案例1.3.1 导入JS文件1.3.2 VUE入门案例 1.4 VUE基本用法1.4.1 v-cloak属性1.4.2 v-text指令1.4.3 v-html指令1.4.4 v-pre指令1.4.5 v-once指令1.4.6 v-model指令1.4.7 MVVM思想 1.5 事件绑定1.5.1…

Win UI3开发笔记(四)设置主题续

上文讲到过关于界面和标题栏以及普通文本的主题设置,这篇说一下关于对话框的主题设置。 我最终没找到办法,寻求办法的朋友可以不用接着看了,以下只是过程。 一个对话框包括标题部分、内容部分和按钮部分,其中,在Cont…

Maven编译报processing instruction can not have PITarget with reserveld xml name

在java项目中,平时我们会执行mvn clean package命令来编译我们的java项目,可是博主今天执行编译时突然报了 processing instruction can not have PITarget with reserveld xml name 这个错,网上也说法不一,但是绝大绝大部分是因…

JavaScript最新实现城市级联操作,json格式的数据

前置知识&#xff1a; <button onclick"doSelect()">操作下拉列表</button><hr>学历&#xff1a;<select id"degree"><option value"0">--请选择学历--</option><option value"1">专科<…

【推荐算法系列十六】:协同过滤

文章目录 参考原理基于邻域的协同过滤算法基于用户的协同过滤&#xff08;User-Based Collaborative Filtering&#xff09;基于内容的协同过滤 基于模型的协同过滤算法 扩展优缺点 参考 推荐系统之神经协同过滤 原理 基于邻域的协同过滤算法 基于邻域的协同过滤算法又包括…

react-组件进阶

1.目标 能够实用props接收数据 能够实现父子组件之间的通讯 能够实现兄弟组件之间的通讯 能够给组件添加props校验 能够说出生命周期常用的钩子函数 能够知道高阶组件的作用 2.目录 组件通讯介绍 组件的props 组件通讯的三种方式 Context props深入 组件的生命周期 Render-p…

2023年03月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析

一、单选题(共10题,共30分) 第1题 以下存储器中的数据不会受到附近强磁场干扰的是( )。 A:硬盘 B:U 盘 C:内存 D:光盘 答案:D 第2题 下列流程图,属于计算机的哪种程序结构?( ) A:顺序结构 B:循环结构 C:分支结构 D:数据结构 答案:C 第3题 对于默认小…

【半监督医学图像分割 2021 IEEE】DU-GAN

【半监督医学图像分割 2021 IEEE】DU-GAN 论文题目&#xff1a;DU-GAN: Generative Adversarial Networks with Dual-Domain U-Net Based Discriminators for Low-Dose CT Denoising 中文题目&#xff1a;基于双域U-Net鉴别器的生成对抗网络用于低剂量CT去噪 论文链接&#xff…

opencv图像腐蚀

腐蚀&#xff08;Erosion&#xff09;是一种形态学图像处理操作&#xff0c;用于移除图像中的小白点、细小物体或者边缘。它通过将结构元素应用于图像上的像素来实现。 以下是opencv实现图像腐蚀的代码 #include <opencv2/highgui/highgui.hpp> #include <opencv2/im…

深度学习 精选笔记(4)线性神经网络-交叉熵回归与Softmax 回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

【Hudi】核心概念

https://www.bilibili.com/video/BV1ue4y1i7na?p17&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf 大数据新风口&#xff1a;Hudi数据湖&#xff08;尚硅谷&Apache Hudi联合出品&#xff09; 1 基础概念 1.1 时间轴(TimeLine) 1.2 文件布局(File Layout) 1.3 索引(In…

Zookeeper启动报错排查

前言&#xff1a;生产linux部署的zookeeper&#xff0c;执行启动脚本后&#xff0c;还是无法使用&#xff0c;故进行重启排查 在zookeeper的bin目录下执行 ./zkServer.sh start-foreground 可实时查看启动日志排查问题 根据上面的日志可以看出&#xff0c;是zoo.cfg配置文件里…

Aigtek高精度电流源仪器设计规范

高精度电流源仪器是一种用于产生和测量精确电流的设备&#xff0c;广泛应用于电子、通信、自动控制等领域。为了确保仪器的性能和可靠性&#xff0c;设计过程中需要遵循一些规范。 电流源仪器的设计要注重稳定性。稳定性是保证仪器输出电流精度的关键因素。设计过程中应选择高精…

什么是大模型微调?微调的分类、方法、和步骤

2023年,大模型成为了重要话题,每个行业都在探索大模型的应用落地,以及其能够如何帮助到企业自身。尽管微软、OpenAI、百度等公司已经在创建并迭代大模型并探索更多的应用,对于大部分企业来说,都没有足够的成本来创建独特的基础模型(Foundation Model):数以百亿计的数据…

ubuntu+QT+ OpenGL环境搭建和绘图

一&#xff0c;安装OpenGL库 安装OpenGL依赖项&#xff1a;运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。 安装OpenGL头文件&#xff1a;运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。 安装GLUT库&#xff1a;GLUT&#xff08;Ope…

web前端-html表单元素

文章目录 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>周鑫的</title></head> <body> <form action"06、内联框架.html" method"get"><h1>登录…