问答详情
源自:9-4 为所欲为 - 选择器最高层级!important

!important的优先级不应该是最高吗,为什么下面的代码显示的“简单”还是blue蓝色的,求解

<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>


提问者:weibo_枫尘逍遥_0 2017-02-10 22:17

个回答

  • qq_Absurdyears_0
    2017-02-11 21:06:33
    已采纳

    http://img.mukewang.com/589f094f00019a4809460378.jpg上图中我对#second(也就是第二段文字)设置了两个css样式,第一个样式为蓝色加了!important,第二个样式为绿色没加!important,第二段文字样式表现为蓝色,继承的是加了!important的样式,优先级表现在这,而你对简单二字单独设置了蓝色样式,你设置的p样式对于简单二字只是继承,而继承权值最低只有0.1,你单独设置的#second .first{color:blue;}权值是100,所以简单二字的样式为蓝色

  • 慕丝0026560
    2017-02-11 00:44:52

    继承的权值只有0.1,然后就近原则。

  • 慕粉2117563963
    2017-02-10 22:39:37

    你又单独设置了个类选择器,类选择器把红色覆盖了

  • Excited_Cat
    2017-02-10 22:37:53

    权重相同时,谁靠下用谁的

    #second .first{color:blue;}是继承了p的设置,所以权重和!improtant是相同的,但由于它比p{color:red!improtant;}更靠近代码块,所以“简单”两个字采用下面的设置

  • 慕粉1637207462
    2017-02-10 22:30:13

    应该是覆盖了,或者说是层叠了。p中red虽然级别最高,但span是子元素,在渲染时又把红色覆盖了。

  • elite达人
    2017-02-10 22:29:50

    因为你后面又重新设置了“简单”的样式,!important只是普遍是红色,除了你特别去重新设置某些字的样式。