加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

[笔记]JS修改important的样式

发布时间:2020-12-15 01:18:46 所属栏目:C语言 来源:网络整理
导读:我们在书写CSS时经常会使用 !important来给样式最高的权重,使得这些样式不会被其他样式覆盖。当然同样的问题也来了,当我们需要使用JS来覆盖这些样式时,该如何操作呢? 一、问题 假如我们有以下代码: style type='text/css'div { width: 100px; height: 1

我们在书写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,

《[笔记]JS修改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');

这种方式。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读