CSS的样式选择器以及优先级算法汇总

CSS的样式选择器有很多种,常见的有以下几种:

  1. 元素选择器(Element Selector) :通过元素的名称来选择元素。例如,p选择所有的段落元素。

  2. 类选择器(Class Selector) :通过类名来选择元素。类选择器以句点.开头,例如,.myclass选择所有类名为myclass的元素。

  3. ID选择器(ID Selector) :通过元素的ID属性来选择元素。ID选择器以井号#开头,例如,#myid选择ID为myid的元素。

  4. 属性选择器(Attribute Selector) :通过元素的属性来选择元素。例如,[type="text"]选择所有type属性为text的元素。

  5. 后代选择器(Descendant Selector) :选择某个元素的后代元素。例如,div p选择所有div元素内部的p元素。

  6. 子元素选择器(Child Selector) :选择某个元素的直接子元素。例如,ul > li选择所有ul元素下的直接子元素li

  7. 伪类选择器(Pseudo-class Selector):用于选择处于特定状态的元素,如:hover(鼠标悬停)、:first-child(第一个子元素)、:nth-child(n)(第n个子元素)等。

  8. 伪元素选择器(Pseudo-element Selector):用于选择元素的特定部分,如::before(在元素内容之前插入内容)、::after(在元素内容之后插入内容)等。

CSS3引入了许多新的样式,其中一些常见的包括:

  1. 边框样式(Border Styles) :新增了更多样式的边框,如border-radius(圆角边框)和border-image(图片边框)等。

  2. 渐变(Gradients) :新增了线性渐变(linear-gradient)和径向渐变(radial-gradient)等。

  3. 阴影(Box Shadows) :新增了更多样式的阴影效果,如box-shadow

  4. 过渡(Transitions):新增了过渡效果,使元素的样式在一段时间内平滑地过渡到另一种样式。

  5. 动画(Animations):新增了动画效果,可以通过关键帧(keyframes)来定义元素的动画效果。

  6. 媒体查询(Media Queries):允许根据设备的特性(如屏幕宽度、设备方向等)来应用不同的样式。

在CSS中,当多个样式规则应用到同一个元素时,就会涉及到样式选择器的优先级问题。CSS样式选择器的优先级原则可以总结为以下几点:

  1. 重要性(!important) :使用!important声明的样式具有最高的优先级,会覆盖其他所有样式。但是,滥用!important可能导致样式表混乱,应该尽量避免使用。

  2. 优先级就近原则:同权重情况下样式定义最近者为准。

  3. 内联样式(Inline Styles) :在元素的style属性中定义的样式具有更高的优先级,会覆盖外部样式表和内部样式表中的样式。

  4. ID选择器(ID Selectors):ID选择器具有比类选择器和元素选择器更高的优先级。如果同一个元素同时使用了ID选择器和类选择器,ID选择器的样式会被应用。

  5. 类选择器和属性选择器(Class Selectors and Attribute Selectors):类选择器和属性选择器的优先级相同,比元素选择器的优先级高。如果同一个元素同时使用了类选择器和元素选择器,类选择器的样式会被应用。

  6. 元素选择器(Element Selectors):元素选择器的优先级最低,会被其他选择器所覆盖。如果同一个元素同时使用了多个元素选择器,后面定义的样式会覆盖前面定义的样式。

  7. 组合选择器(Combined Selectors):当多个选择器组合在一起时,会根据选择器的特定性(Specificity)来确定优先级。特定性是一个用于计算选择器优先级的值,通常由选择器中ID选择器、类选择器和元素选择器的数量组成。

  8. 通配符* :使用 * 符号来选择所有元素的样式。通配符选择器可以应用于所有元素,而不仅限于特定的元素或类

  9. 组合选择器(Combined Selectors):当多个选择器组合在一起时,会根据选择器的特定性(Specificity)来确定优先级。特定性是一个用于计算选择器优先级的值,通常由选择器中ID选择器、类选择器和元素选择器的数量组成。

  10. 继承(Inheritance):某些样式是可以继承的,即子元素会继承父元素的样式。但是,不是所有样式都可以继承,如边框、背景等样式通常不会被继承。

相关推荐
weixin_514221852 小时前
FDTD与matlab、python耦合
python·学习·matlab·fdtd
SUPER52663 小时前
FastApi项目启动失败 got an unexpected keyword argument ‘loop_factory‘
java·服务器·前端
sanx183 小时前
专业电竞体育数据与系统解决方案
前端·数据库·apache·数据库开发·时序数据库
递归不收敛3 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记大纲
pytorch·学习·机器学习
不太可爱的叶某人3 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
你的人类朋友5 小时前
【Node】认识一下Node.js 中的 VM 模块
前端·后端·node.js
Cosolar5 小时前
FunASR 前端语音识别代码解析
前端·面试·github
递归不收敛6 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:2.4 激活函数与多类别处理
pytorch·学习·机器学习
加油20196 小时前
如何快速学习一个网络协议?
网络·网络协议·学习·方法论
A9better7 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习