CSS详解:特性、选择器与优先级

news2025/5/20 21:44:44

CSS详解:特性、选择器与优先级

目录

  • CSS详解:特性、选择器与优先级
    • 一、CSS的核心特性
      • 1. 层叠性(Cascading)
      • 2. 继承性(Inheritance)
      • 3. 优先级(Specificity)
      • 4. 响应式设计
      • 5. 动画与过渡
    • 二、CSS选择器详解
      • 1. 基本选择器
      • 2. 组合选择器
      • 3. 属性选择器
      • 4. 伪类选择器
      • 5. 伪元素选择器
    • 三、CSS优先级(Specificity)详解
      • 1. 优先级计算规则
        • 例子
      • 2. !important的作用
      • 3. 层叠顺序
    • 四、实战示例
    • 五、总结

CSS(Cascading Style Sheets,层叠样式表)是前端开发中不可或缺的技术之一。它负责网页的外观和布局,与HTML结构和JavaScript行为共同构建了现代网页。本文将详细介绍CSS的核心特性、选择器的种类及其优先级(Specificity),帮助你更好地理解和运用CSS。


一、CSS的核心特性

1. 层叠性(Cascading)

CSS的“层叠”指的是当多个样式规则作用于同一元素时,浏览器会根据一定的规则决定最终应用哪一条样式。这些规则包括样式来源(如浏览器默认样式、外部样式表、内联样式等)、选择器优先级和声明顺序。

2. 继承性(Inheritance)

某些CSS属性会从父元素继承到子元素。例如,colorfont-family等文本相关属性会自动传递给子元素,而marginpadding等布局属性则不会继承。可以通过inheritinitialunset等关键字手动控制继承行为。

3. 优先级(Specificity)

当多个规则作用于同一元素时,优先级决定了哪条规则生效。优先级由选择器的类型和数量决定,后文将详细介绍。

4. 响应式设计

CSS支持媒体查询(Media Queries),可以根据不同的设备和屏幕尺寸应用不同的样式,实现响应式布局。

5. 动画与过渡

CSS3引入了动画(@keyframes)和过渡(transition)属性,使网页交互更加丰富和流畅。


二、CSS选择器详解

选择器用于选中HTML文档中的元素,以便为其应用样式。选择器的种类丰富,灵活组合可以实现复杂的样式控制。

1. 基本选择器

  • 元素选择器:选中所有指定标签的元素
    p { color: blue; }
    
  • 类选择器:选中所有带有指定class的元素
    .highlight { background: yellow; }
    
  • ID选择器:选中指定id的元素(页面唯一)
    #header { font-size: 2em; }
    
  • 通配符选择器:选中所有元素
    * { box-sizing: border-box; }
    

2. 组合选择器

  • 后代选择器:选中某元素内部的所有指定后代元素
    .nav a { color: red; }
    
  • 子元素选择器:只选中直接子元素
    ul > li { list-style: none; }
    
  • 相邻兄弟选择器:选中紧跟在某元素后的指定元素
    h2 + p { margin-top: 0; }
    
  • 通用兄弟选择器:选中同级后面所有指定元素
    h2 ~ p { color: gray; }
    

3. 属性选择器

  • 存在属性
    input[required] { border: 1px solid red; }
    
  • 属性值等于
    a[target="_blank"] { color: orange; }
    
  • 属性值包含
    [class~="btn"] { padding: 10px; }
    
  • 属性值以某字符串开头/结尾/包含
    a[href^="https"] { color: green; }
    a[href$=".pdf"] { color: red; }
    a[href*="example"] { font-weight: bold; }
    

4. 伪类选择器

  • 结构伪类
    li:first-child { font-weight: bold; }
    li:last-child { color: blue; }
    li:nth-child(2n) { background: #eee; }
    
  • 状态伪类
    a:hover { text-decoration: underline; }
    input:focus { border-color: blue; }
    

5. 伪元素选择器

  • 常用伪元素
    p::first-line { font-size: 1.2em; }
    p::first-letter { color: red; }
    div::before { content: "★"; }
    div::after { content: "☆"; }
    

三、CSS优先级(Specificity)详解

当多个选择器选中同一元素并设置了相同的属性时,浏览器会根据优先级规则决定最终应用哪一条样式。

1. 优先级计算规则

优先级由四个部分组成,通常用(a, b, c, d)表示:

  • a:内联样式(如style="..."),有最高优先级
  • b:ID选择器的数量
  • c:类选择器、属性选择器、伪类的数量
  • d:元素选择器、伪元素的数量

优先级比较时,从左到右依次比较,遇到高的就确定胜负。

例子
选择器优先级
#header(0,1,0,0)
.nav .item(0,0,2,0)
ul li a(0,0,0,3)
a:hover(0,0,1,1)
style="color:red"(1,0,0,0)

2. !important的作用

!important可以提升某条样式的优先级,使其覆盖其他规则。但应谨慎使用,避免维护困难。

p { color: blue !important; }

3. 层叠顺序

当优先级相同时,后写的规则会覆盖前面的规则。


四、实战示例

<!DOCTYPE html>
<html>
<head>
  <style>
    p { color: black; }                /* (0,0,0,1) */
    .highlight { color: orange; }      /* (0,0,1,0) */
    #main { color: green; }            /* (0,1,0,0) */
    p.highlight { color: blue; }       /* (0,0,1,1) */
    p { color: red !important; }       /* (0,0,0,1) + !important */
  </style>
</head>
<body>
  <p id="main" class="highlight">Hello CSS!</p>
</body>
</html>

分析:

  • p:color: black
  • .highlight:color: orange
  • #main:color: green
  • p.highlight:color: blue
  • p:color: red !important

最终显示为红色,因为!important提升了优先级。


五、总结

  • CSS的特性包括层叠、继承、优先级、响应式、动画等。
  • 选择器种类丰富,合理组合可以精准选中目标元素。
  • 优先级决定了样式的最终应用,理解其计算规则有助于解决样式冲突。
  • !important应谨慎使用,优先考虑优化选择器结构。

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

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

相关文章

手机怎么查看网络ip地址?安卓/iOS设备查询指南

在移动互联网时代&#xff0c;IP地址作为设备的网络身份证&#xff0c;无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法&#xff0c;帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…

无损耗协议:PROFINET和EtherNet IP网关的高效安装指南

作为风力发电机组监控系统的重要组成部分&#xff0c;PROFINET和EtherNet/IP协议转换网关倍讯BX-606-EIP的安装至关重要。作为安装工,我们要确保网关安装的高效顺利,保证风力发电机组的稳定运行。 首先,我们需要仔细检查网关的硬件接口,确保所有连接线缆与设备端口相匹配。网关…

【知识产权出版社-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

基于OAuth2+SpringSecurity+Jwt实现身份认证和权限管理后端服务

1、简介 本文讲述了如何实现简易的后端鉴权服务。所谓“鉴权”&#xff0c;就是“身份鉴定”“权限判断”。涉及的技术有&#xff1a;OAuth2、SpringSecurity、Jwt、过滤器、拦截器。OAuth2用于授权&#xff0c;使用Jwt签发Access Token和Refresh Token&#xff0c;并管理token…

liunx定时任务,centos定时任务

yum install cronie crontabs -y直接运行 crond -n 在前台运行 crond -i 守护进程在没有inotify支持的情况下运行systemctl service crond start # 启动服务 systemctl enable crond.service # 设置开机自启 sudo systemctl restart crond # 重启 cron 服务systemctl serv…

三种嵌入式开发常用的组网方式

一、三种嵌入式开发常用的组网方式 这里记录了三种嵌入式开发常用的网络环境&#xff0c;最终目标也就是让开发板、虚拟机、物理机在同一个局域网下。一般的网络环境下都非常容易实现&#xff0c;但是对于学生校园网可得想些法子了&#xff0c;因为校园网一般会有设备连接数限…

ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案

ping baidu.coom可以通&#xff0c;ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址&#xff0c;记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6&#xff0c;eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…

城市排水管网流量监测系统解决方案

一、方案背景 随着工业的不断发展和城市人口的急剧增加&#xff0c;工业废水和城市污水的排放量也大量增加。目前&#xff0c;我国已成为世界上污水排放量大、增加速度快的国家之一。然而&#xff0c;总体而言污水处理能力较低&#xff0c;有相当部分未经处理的污水直接或间接排…

Ubuntu Desktop QEMU/KVM中使用Ubuntu Server 22.04配置k8s集群

Ubuntu Desktop QEMU/KVM中使用Ubuntu Server 22.04配置k8s集群 1.本机部署个代理 这里我是自己用dockersing-box 部署的 http://192.168.2.105:10808 如果 用v2rayN等软件部署的&#xff0c;记得开启局域网共享 2.安装虚拟机 我本机使用的是Ubuntu Desktop ,这里在QEMU/K…

YOLOv8 在单片机上的几种部署方案

YOLOv8 在单片机上的部署方案 单片机资源&#xff08;如内存、计算能力&#xff09;有限&#xff0c;直接部署完整的 YOLOv8 模型并不现实。不过&#xff0c;我们可以通过模型量化、优化和使用轻量级框架来实现简化版的目标检测。下面为你介绍几种可行的方案&#xff1a; 方案…

后端框架(1):Mybatis

什么是框架&#xff1f; 盖高楼&#xff0c;框架结构。 框架结构就是高楼的主体&#xff0c;基础功能。 把很多基础功能已经实现了(封装了)。 在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率。 mybatis&#xff1a;对jd…

linux下tcp/ip网络通信笔记1,

本文章主要为博主在学习网络通信的笔记一个Udp_echo_server,和client的代码实现 1&#xff0c;网络发展&#xff0c;网络协议&#xff0c;意识到网络通信——不同主机的进程间通信&#xff0c; 2&#xff0c;学习如何在应用层调用系统提供的接口进行通信&#xff0c;echo_Udp…

语音识别——声纹识别

通过将说话人的声音与数据库中的记录声音进行比对&#xff0c;判断说话人是否为数据库白名单中的同一人&#xff0c;从而完成语音验证。目前&#xff0c;3D-Speaker 声纹验证的效果较为出色。 3D-Speaker 是一个开源工具包&#xff0c;可用于单模态和多模态的说话人验证、说话…

window 显示驱动开发-报告图形内存(三)

图形内存报告示例 示例 1&#xff1a;笔记本电脑上的 128 MB 专用板载图形内存 以下屏幕截图显示了使用 Intel Iris 离散图形适配器运行 Windows 11 的 Surface 笔记本电脑的计算图形内存数。 适配器的可用内存总数为 16424 MB&#xff0c;用于图形用途&#xff0c;细分如下&…

UE5 GAS框架解析内部数据处理机制——服务器与客户端

当&#xff0c; gas通过点击鼠标光标触发事件时&#xff0c;内部的处理机制。 当通过点击事件&#xff0c;命中中目标时&#xff0c; 可获取到对应的TargetData 目标数据。处理相应的操作。 仅有本地的客户端的情况下。命中并不会有什么异常。 当存在服务器时&#xff0c; 服…

开源GPU架构RISC-V VCIX的深度学习潜力测试:从RTL仿真到MNIST实战

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 一、开篇&#xff1a;AI芯片架构演变的三重挑战 &#xff08;引述TPUv4采用RISC-V的行业案…

Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(七)

Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;七&#xff09; 在 Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;六&#xff09;-CSDN博客 的基础上改进&#xff0c;主要是…

【工具】Windows|外接的显示器怎么用软件调亮度(Brightness Slider)

文章目录 工具安装及使用Twinkle Tray&#xff1a;Brightness Slider补充背景知识1. DDC/CI&#xff08;Display Data Channel Command Interface&#xff09;2. WMI&#xff08;Windows Management Instrumentation&#xff09;3. Twinkle Tray如何结合两者&#xff1f;对比总…

【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南

目录 一、环境准备与基础配置 1. 系统环境要求 2. 初始化系统配置 二、搭建 LNMP 基础架构 1. 一键安装 LNMP 组件 2. 启动数据库服务 三、部署 Nextcloud 存储服务 1. 上传并解压安装包 2. 设置目录权限&#xff08;测试环境配置&#xff09; 3. 配置 MariaDB 数据库…

【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最小化Vscode界面

背景说明&#xff1a; 每次把教学照片上传csdn&#xff0c;都需要打开相册&#xff0c;一张张截图&#xff0c;然后ctrlV黏贴到CSDN内&#xff0c;我觉得太烦了。 改进思路&#xff1a; 是否可以先把所有照片都上传到csdn&#xff0c;然后再一张张的截图&#xff08;去掉幼儿…