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://www.hqwc.cn/news/495912.html

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

相关文章

leetcode:134.加油站

解题思路:需要注意开始时的编号,有的可以走一圈,有的走不了 模拟过程:for循环主要是用来模拟线性的过程,而在这里它是环状的; 可以用暴力解法,但是在这里我用贪心来解决。 常见疑惑&#xff1…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意: ①only a…

LeetCode 刷题 [C++] 第141题.环形链表

题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

安全防御-第六次

内容安全 攻击可能只是一个点,防御需要全方面进行 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包(数据包分片,分段需要重组),之后对数据包的内容进行识别。(应用层&…

Python 实现Excel自动化办公(上)

在Python 中你要针对某个对象进行操作,是需要安装与其对应的第三方库的,这里对于Excel 也不例外,它也有对应的第三方库,即xlrd 库。 什么是xlrd库 Python 操作Excel 主要用到xlrd和xlwt这两个库,即xlrd是读Excel &am…

type may not be empty [type-empty]

原因是使用了规范commit信息的工具,你的提交信息不符合规范,所以被拒绝了 commit规范工具 commitlinthusky 解决方式一: 修改提交信息, 使其符合规范 git commit -m "feat: 新功能"使用Git Gui的使用以下格式写提交…

安装使用zookeeper

先去官网下载zookeeper:Apache ZooKeeper 直接进入bin目录,使用powerShell打开。 输入: ./zkServer.cmd 命令,启动zookeeper。 zookeeper一般需要配合Dubbo一起使用,作为注册中心使用,可以参考另一篇博客&#xf…

探索IP地址定位工具:解读IP数据云的功能与优势

在当今数字化时代,IP地址定位工具成为了许多领域中不可或缺的技术支持,为网络安全、地理定位服务和个性化推荐等提供了重要数据支持。其中,IP数据云作为一种领先的IP地址定位工具,具有一系列功能和优势,本文将对其进行…

SM30增强(隐藏标准按钮【权限控制】、事件处理【记录新增字段或者自动带出描述、日期等】)

1.隐藏标准按钮、自定义标准按钮(不赘述,同个道理) 环境-》修改-》用户界面 按照提示创建对应的SM30自定义GUI 创建好之后可以通过SM30界面上的状态查看不同的GUI名称 这里需要注意的是,编辑和显示的界面实际上GUI是不一样的 创…

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

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

jvm常用参数配置

一、 常用参数 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同…

Aigtek高压放大器是什么东西做的

在许多电子应用中,需要将低电压信号放大到较高电压以满足特定的需求。为了实现这个目标,高压放大器被广泛采用。高压放大器是一种专用电子设备,使用特定的电路和器件来增益输入信号的电压。它通常由以下几个主要组成部分构成。 电源供应 高压…