[笔记]JS修改important的样式
我们在书写CSS时经常会使用 !important来给样式最高的权重,使得这些样式不会被其他样式覆盖。当然同样的问题也来了,当我们需要使用JS来覆盖这些样式时,该如何操作呢? 一、问题假如我们有以下代码: <style type='text/css'> div { width: 100px; height: 100px; background-color: olive !important; } </style> <div id="box"></div> 页面上是一个宽高都是100px,背景色是olive的正方形,此时,我们需要使用JS将他的背景色改为蓝色。 我们首先想到的是使用style.属性的方式去改变。可是我们都知道,important的权重是高于行内样式的。于是, document.getElementById('box').style.backgroundColor = 'red'; 这段JS变有了,实际并没有生效,通过F12控制台,我们发现,实际是添加上了,但是权重问题,被覆盖了。 既然内联的样式有important,那么行内的样式有important会是什么样的效果呢? 直接在Element中添加上important, 于是,div变成了红色。 二、解决方案我们知道了给行内的样式增加important可以覆盖掉内联中的important的样式,毕竟important相同,行内还是要比内联的样式高的。 我们尝试: document.getElementById('box').style.backgroundColor = 'red !important'; 发现,这种写法,并没有成功添加上,当然也就生效不了。 查看原生JS操作CSS样式,我们发现style有个cssText属性,他可以获取整个的行内样式,而且他也是可以被赋值的,那么此属性就可以被利用了。 于是,我们再次尝试, document.getElementById('box').style.cssText = "background-color:red !important"; 此时,达到了我们真正的目的。 注:刚说过了cssText是整个行内的样式,注意赋值时覆盖其他样式。 同样的,在jQuery下,可以通过 $('#box').css('cssText','background-color:red !important'); 这种方式。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |