CSS的样式选择器有很多种,常见的有以下几种:
-
元素选择器(Element Selector) :通过元素的名称来选择元素。例如,
p
选择所有的段落元素。 -
类选择器(Class Selector) :通过类名来选择元素。类选择器以句点
.
开头,例如,.myclass
选择所有类名为myclass
的元素。 -
ID选择器(ID Selector) :通过元素的ID属性来选择元素。ID选择器以井号
#
开头,例如,#myid
选择ID为myid
的元素。 -
属性选择器(Attribute Selector) :通过元素的属性来选择元素。例如,
[type="text"]
选择所有type
属性为text
的元素。 -
后代选择器(Descendant Selector) :选择某个元素的后代元素。例如,
div p
选择所有div
元素内部的p
元素。 -
子元素选择器(Child Selector) :选择某个元素的直接子元素。例如,
ul > li
选择所有ul
元素下的直接子元素li
。 -
伪类选择器(Pseudo-class Selector):用于选择处于特定状态的元素,如:hover(鼠标悬停)、:first-child(第一个子元素)、:nth-child(n)(第n个子元素)等。
-
伪元素选择器(Pseudo-element Selector):用于选择元素的特定部分,如::before(在元素内容之前插入内容)、::after(在元素内容之后插入内容)等。
CSS3引入了许多新的样式,其中一些常见的包括:
-
边框样式(Border Styles) :新增了更多样式的边框,如
border-radius
(圆角边框)和border-image
(图片边框)等。 -
渐变(Gradients) :新增了线性渐变(
linear-gradient
)和径向渐变(radial-gradient
)等。 -
阴影(Box Shadows) :新增了更多样式的阴影效果,如
box-shadow
。 -
过渡(Transitions):新增了过渡效果,使元素的样式在一段时间内平滑地过渡到另一种样式。
-
动画(Animations):新增了动画效果,可以通过关键帧(keyframes)来定义元素的动画效果。
-
媒体查询(Media Queries):允许根据设备的特性(如屏幕宽度、设备方向等)来应用不同的样式。
在CSS中,当多个样式规则应用到同一个元素时,就会涉及到样式选择器的优先级问题。CSS样式选择器的优先级原则可以总结为以下几点:
-
重要性(!important) :使用
!important
声明的样式具有最高的优先级,会覆盖其他所有样式。但是,滥用!important
可能导致样式表混乱,应该尽量避免使用。 -
优先级就近原则:同权重情况下样式定义最近者为准。
-
内联样式(Inline Styles) :在元素的
style
属性中定义的样式具有更高的优先级,会覆盖外部样式表和内部样式表中的样式。 -
ID选择器(ID Selectors):ID选择器具有比类选择器和元素选择器更高的优先级。如果同一个元素同时使用了ID选择器和类选择器,ID选择器的样式会被应用。
-
类选择器和属性选择器(Class Selectors and Attribute Selectors):类选择器和属性选择器的优先级相同,比元素选择器的优先级高。如果同一个元素同时使用了类选择器和元素选择器,类选择器的样式会被应用。
-
元素选择器(Element Selectors):元素选择器的优先级最低,会被其他选择器所覆盖。如果同一个元素同时使用了多个元素选择器,后面定义的样式会覆盖前面定义的样式。
-
组合选择器(Combined Selectors):当多个选择器组合在一起时,会根据选择器的特定性(Specificity)来确定优先级。特定性是一个用于计算选择器优先级的值,通常由选择器中ID选择器、类选择器和元素选择器的数量组成。
-
通配符* :使用
*
符号来选择所有元素的样式。通配符选择器可以应用于所有元素,而不仅限于特定的元素或类 -
组合选择器(Combined Selectors):当多个选择器组合在一起时,会根据选择器的特定性(Specificity)来确定优先级。特定性是一个用于计算选择器优先级的值,通常由选择器中ID选择器、类选择器和元素选择器的数量组成。
-
继承(Inheritance):某些样式是可以继承的,即子元素会继承父元素的样式。但是,不是所有样式都可以继承,如边框、背景等样式通常不会被继承。