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

在这节里8行代码去掉p后用!important似乎对部分文字失效

在这节里

p{color:red!imoprtant:}

加上!important后 全文变红

但是去掉下方p.first{color:green:}前的p

发现绿色设置对第二段的简单依然有作用是为什么

-----------------------由于至此回答的答案不能解决问题,因此补充-------------------------------

由此开始:

<style type="text/css">

        p{color:red!important;}/*权值变为最高*/

        p.first{color:green;}/*类选择器 权值为10*/

</style>

</head>

<body>

    <h1>勇气</h1>

    <p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>

    <p id="second">到了三年级下学期时,我们班上了一节公开课,老师提出了一个很<span class="first">简单</span>的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:"我来,我来。"我环顾了四周,就我没有举手。</p>

    

</body>

</html>

由于上面的权值比较高所以全文为红色 包括第一段和第二段所有文字

那么修改下css样式 将上文中p.first去掉p 改为.first

<style type="text/css">

        p{color:red!important;}/*权值变为最高*/

        .first{color:green;}/*类选择器 权值为10*/

</style>

修改完以后发现全文依然会变红 但是正文第二段中的<span class="first">简单</span> 依然会被.first作用为绿色

这里我的问题是,为什么去掉p以后 正文第二段的简单依然会变为绿色 上下两段css的权重到底怎么算 

    请各位赐教,不胜感激。

提问者:哦88 2016-05-18 18:05

个回答

  • 慕粉3381330
    2016-05-23 23:38:25
    已采纳

    不去p,!important权重最高,全为红色,span中继承了p的颜色属性也为红,此时类选择器定义的为父元素,对子元素span无意义。去掉后,继承红色权重0.1,span类选择权重10,故呈现绿色。不知这样理解对不对。

  • leeyg
    2016-06-26 01:02:00

    先看“p.first{}”和“p空格.first{}”的区别,前者选中的是第一个p段落,后者选中的是p段落中的后代子元素。在没有加上“!important”时,先加上空格,因为内部元素的优先级更高,全段除了“简单”2字都为红色;去掉空格,第一段绿色第二段红色,说明跟权值没关系,不加空格的p.first{}就是指定了第一个段落。现在我们加上“!important”,先加上空格,内部元素的优先级更高,所以有“简单”为绿色全文为红色;去掉空格,全文自然都是红色

  • Awesomett
    2016-05-25 18:38:23

    我是这样理解的

    .first{color:green;}和p.first{color:green;}以及p. first{color:green;}(加了空格)

    其中没加空格的话、是没有包含的、也就是说.first的对象是p标签元素,没有作用于span标签。

    加了空格之后包含了span标签。

    而由于p{color:red!important;}的存在、p标签元素的最高权值是这个。

    但是span标签元素的红色效果是继承的、继承的权值很小,所以加了空格之后可以显示.first内的修饰效果。

    如果不加p的话、更好理解了,就是因为第一个<p class="first">是在<p>内的所以被!important影响了权值。

    但是<span class="first">的话、没有被!important影响权值问题,只是有个继承效果。

    所以最后显示了.first的修饰效果。


    不知道对不对、我自己总结的、还希望有大神出来拉我一把...谢谢。

  • AIB青柠
    2016-05-22 11:56:07

    我是这样想的,因为有p,所以两个p中有!important的最大,应用它的属性。当把下面的p去掉后,上面的对于下面而言是继承,所以只有0.1,而类选择器有10,所以简单就是绿色的了。(不知道是不是这样理解,有错误还请大神们指出)

  • 尼加拉瓜
    2016-05-20 15:17:43

    我也有同样的疑问

  • 慕粉3370942
    2016-05-18 18:28:50

    按照标签的重要性判断

  • lesses
    2016-05-18 18:12:51

    !important  你就看成他的地位最高

  • wangdd3
    2016-05-18 18:11:20

    因为有一个权重。。加了 !important 以后 权重会增加,  也就会全部以此为主, 如果不加!important    p{} 的权重没有 p.first{}  大  所以后面又以p.first{}为主