前言
看到网上大部分文章讲的是CSS选择器优先级,其实并不准确。应该称之为CSS声明的优先级
,请听我道来。
在此之前先题个问题:CSS是又什么组成的?
很多人会觉得这个问题很简单经常被忽略,包括我自己。大部分人应该知道它的引入方法和写法,不就是写样式吗?
基本概念
其实CSS是由一系列的规则
组成,规则
又由选择器
和声明块
来组成,再细化就是,声明块
就是我们平时所写的属性
和值
所构成的声明
组成的。总结如下:
CSS:规则 = 选择器 + 声明块(声明 = 属性 + 值)
正是因为这个结构,所以我们学CSS最先学的就是选择器了,然后再是那些属性啦,平时我们所说的优先级就是声明的优先级,这就是我标题的由来了。那为什么要有优先级呢?
优先级就是分配给指定的CSS声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。
当同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的CSS规则总是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。
简单来说,某个元素被多个选择器选中了,并且有相同的声明,谁的优先级高元素就应用谁。<