<html>
<head>
<title>!important</title>
<style type="text/css">
p{color:red!important;}
p.first{color:green;}
#second .first{color:blue;}
</style>
</head>
<body>
<h1>勇气</h1>
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
<p id="second">到了三年级下学期时,我们班上了一节公开课,老师提出了一个很<span class="first">简单</span>的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:"我来,我来。"我环顾了四周,就我没有举手。</p>
</body>
</html>
上图中我对#second(也就是第二段文字)设置了两个css样式,第一个样式为蓝色加了!important,第二个样式为绿色没加!important,第二段文字样式表现为蓝色,继承的是加了!important的样式,优先级表现在这,而你对简单二字单独设置了蓝色样式,你设置的p样式对于简单二字只是继承,而继承权值最低只有0.1,你单独设置的#second .first{color:blue;}权值是100,所以简单二字的样式为蓝色
继承的权值只有0.1,然后就近原则。
你又单独设置了个类选择器,类选择器把红色覆盖了
权重相同时,谁靠下用谁的
#second .first{color:blue;}是继承了p的设置,所以权重和!improtant是相同的,但由于它比p{color:red!improtant;}更靠近代码块,所以“简单”两个字采用下面的设置
应该是覆盖了,或者说是层叠了。p中red虽然级别最高,但span是子元素,在渲染时又把红色覆盖了。
因为你后面又重新设置了“简单”的样式,!important只是普遍是红色,除了你特别去重新设置某些字的样式。