修改主题时,css在这个页面定义都无法生效,只能在行内定义才能生效。

解决办法用!important提升权重就解决了

CSS提升权重_银狐笔记主题修改记

起因

修改主题时,css加进去没用,只能写到行内标签里。但是a:hover怎么写到行内标签里?

解决过程

我们知道直接写style可以把css属性直接作用到一个元素上,但是如果这个元素有:hover怎么办呢?还是只能写style吗?查看CSS的标准,你会发现这么一段描述:

Setting properties on a source anchor for each of its dynamic states, using pseudo-classes:
<a href=”http://www.w3.org/”
style=”{color: #900}
:link {background: #ff0}
:visited {background: #fff}
:hover {outline: thin red solid}
:active {background: #00f}”>…</a>

上面这个标准给了我们一个新天地,原来用大括号把自己的css括起来,后面就能自由发挥啦……

但别高兴太早,没有一个浏览器支持这个写法了,即便是Chrome也不例外。

为什么?不是浏览器不思进取,而是这个标准太老了……这是2002年的标准!

所以,如今,你想在inline css中输入a:hover样式是不行的,这种伪选择器如今只存在与CSS的上下文里面

如果一定在元素的属性里完成这个事情该怎么办?那就用JS!

<a href="abc.html" onMouseOver="this.style.color='#0F0'" onMouseOut="this.style.color='#00F'" >Text</a>

代码注解:

onMouseOver时鼠标放到上面,onMouseOut鼠标移开

必须两个都写上去,否则单写一个例如onMouseOver,你移开鼠标颜色不会变!还是#0F0

第二种解决办法

CSS的!important修改权重

!important语法和描述 

!important为开发者提供了一个增加样式权重的方法。

应当注意的是!important是对整条样式的声明,包括这个样式的属性和属性值。

案例

#example {
  font-size: 14px !important;    
}

#container #example {
  font-size: 10px;
}

总结

1、!important会修改当前对应元素的当前css属性和值得权重 

2、!important指定的属性权重比class选择器,ID选择器,内联样式的权重都高。 

3、!important只对当前元素当前属性权重有影响,对子元素权重没影响 

4、如果在在不懂选择器中,相同属性和值都指定了!important,选择器权重高的属性起作用

如果你遇到了特殊的需求,或者你想覆盖用户代理(译注:即浏览器)和开发者的默认样式,提高页面可访问性,你最好慎重使用!important。

你要对你的CSS在考虑周全的同时尽可能地避免使用!important。甚至在上面提到的许多能用到!important的地方它也不总是必要的。 

尽管如此,!important在CSS中还是有用的。如果你接手一个项目,而这个项目之前的开发人员正好使用了!important,那么你在修复一些问题的时候我们今天所讨论的将会派上用场。

OK,上述两种方法都完美解决问题,银狐用了 !important