GVKun编程网logo

用CSS或jQuery覆盖!important(css嵌套书写格式)

10

对于用CSS或jQuery覆盖!important感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍css嵌套书写格式,并为您提供关于css–为什么不鼓励使用`!important`?、css–!

对于用CSS或jQuery覆盖!important感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍css嵌套书写格式,并为您提供关于css – 为什么不鼓励使用`!important`?、css – !important规则是否会覆盖媒体查询?、CSS 之!important_html/css_WEB-ITnose、CSS优先级与!important的有用信息。

本文目录一览:

用CSS或jQuery覆盖!important(css嵌套书写格式)

用CSS或jQuery覆盖!important(css嵌套书写格式)

(这是在Chrome扩展程序中使用内容脚本)

我需要覆盖网页标记为的某些CSS属性!important。这可能吗?

例如,如果我想摆脱标记为重要的边框:

$(".someclass").css(''border'',''none''); //does not work

答案1

小编典典

干得好:

$( ''.someclass'' ).each(function () {    this.style.setProperty( ''border'', ''none'', ''important'' );});

.setProperty元素style对象的方法使您可以传递表示优先级的第三个参数。因此,您要用自己的!important值覆盖!important值。据我所知,不可能用jQuery设置!important优先级,因此您唯一的选择是内置.setProperty方法。

css – 为什么不鼓励使用`!important`?

css – 为什么不鼓励使用`!important`?

标记为 css的几个答案不鼓励使用!important有利于特异性.为什么?

解决方法

您可以使用实际数学来预测,控制和反向设计CSS规则的影响.通过使用!important,你打破了它.以 this JS fiddle为例,它不使用!important: http://jsfiddle.net/hXPk7/

如果您使用Firebug或Chrome开发工具检查标题元素“理查德”,您应该按以下顺序查看这些规则:

/**************************/
/* /hXPk7/show/ (line 20) */
/**************************/
#myExample #title .name {
    color: yellow;
}

/********************************************************/
/* /hXPk7/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
    color: blue;
}

请注意,这不是它们在CSS样式表中出现的顺序 – 而是按照它们的特异性降序排列.首先列出优先级,其他(其规则被更具体的规则覆盖)可能具有划掉的属性.这表明特殊性可以很容易地跟踪(调试?)元素从哪里获取其CSS属性.

现在,与this JS fiddle进行比较 – 实际上是相同的,但是现在使用了一条新规则!important:http://jsfiddle.net/hXPk7/1/

使用Firebug或Chrome开发工具检查相同的元素,您将看到如下内容:

/**************************/
/* /hXPk7/1/show/ (line 20) */
/**************************/
#myExample #title .name {
    color: yellow;
}

/**************************/
/* /hXPk7/1/show/ (line 26) */
/**************************/
span {
    color: black !important;
}

/********************************************************/
/* /hXPk7/1/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
    color: blue;
}

同样,规则是根据它们的特殊性排序的 – 但请注意,这次,虽然最先列出的最具体的规则指定了黄色,但浏览器却将文本呈现为黑色!这是因为!important声明打破了特异性的正常行为,优先采用可能难以追踪的方式.想象一个更现实的网站,可能有数百条规则,控制颜色的网站并不容易找到或改变.

现在,也许这是开发人员工具的一个问题,但我认为它反映了这样一个事实:重要的是需要一个通常易于预测的优先系统并使其更具挑战性.也许有时候使用它,但它不应该是你编写CSS时的第一个工具.

css – !important规则是否会覆盖媒体查询?

css – !important规则是否会覆盖媒体查询?

因此,举例来说,如果我有一个媒体查询,还有一些关于东西的重要规则的常规CSS,它会受到影响吗?

例如:

a{
    color:#0000FF!important;
}
@media (max-width: 300px){
    a{
        color:#FF0000;
    }
}

解决方法

媒体查询和@media规则不会以任何方式影响!important的行为,因为 they do not have any effect on any part of the cascade.(通过扩展,这也意味着 you cannot use a @media at-rule to “remove” an !important flag,即使您使用更具体的选择器.)

当您的媒体查询匹配时,浏览器会看到:

a{
    color:#0000FF!important;
}
a{
    color:#FF0000;
}

如果没有,它会看到:

a{
    color:#0000FF!important;
}

这两种情况都会导致第一个规则集优先,但不会阻止,例如,带有更具体的选择器的!important声明,或者!重要的内联样式,来覆盖它.

这是另一个更好地说明这一点的例子:

a{
    color:#0000FF!important;
}
@media (max-width: 300px){
    a:link,a:visited{
        color:#FF0000!important;
    }
}

当媒体查询匹配时,浏览器会看到:

a{
    color:#0000FF!important;
}
a:link,a:visited{
    color:#FF0000!important;
}

这导致第二个规则优先,因为它具有更具体的选择器(至少对于a elements that match either pseudo-class).如果它与媒体查询不匹配,那么只有第一个规则会产生任何影响,如上所述.

CSS 之!important_html/css_WEB-ITnose

CSS 之!important_html/css_WEB-ITnose

今天写代码,碰到一个关于!important的问题。由于之前并没有好好理解这个概念,所以今天特意查了下资料做个总结。

CSS的原理:

我们知道,CSS写在不同的地方有不同的优先级, .css文件中的定义

首先,先看下面一段代码:

立即学习“前端免费学习笔记(深入)”;

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>测试Css中的!Important区别</title> </head> <style type="text/css">.testClass{ color:blue !important;}</style><body>    <div>        测试Css中的Important    </div></body></html>
登录后复制

虽然元素的style中有testClass类的定义,但是在上面的css定义中的用!important限定的定义却是优先级最高的,无论是在ie6-10或者Firefox和Chrome表现都是一致的,都显示蓝色。

这种情况也同时可以说明ie6是可以识别!important的,只是这个是ie6的一个缺陷吧。如果写成下面的样式,ie6是识别不出来的:

.testClass{ color:blue !important;color:red;}
登录后复制

这样,在ie6下展示的时候会显示成红色。

当然,也可以通过以下方式来让ie6识别:

.testClass{ 
color:blue !important; 

.testClass{ 
color:red; 
}

通过以上方式也是可以让ie6显示成蓝色的。

以上实例说明使用!important的css定义是拥有最高的优先级的。只是在ie6下出了一点小的bug,注意书写方式一般可以轻松避开的。



版权声明:本文为博主原创文章,未经博主允许不得转载。

CSS优先级与!important

CSS优先级与!important

总结

以上是小编为你收集整理的CSS优先级与!important全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

今天的关于用CSS或jQuery覆盖!importantcss嵌套书写格式的分享已经结束,谢谢您的关注,如果想了解更多关于css – 为什么不鼓励使用`!important`?、css – !important规则是否会覆盖媒体查询?、CSS 之!important_html/css_WEB-ITnose、CSS优先级与!important的相关知识,请在本站进行查询。

本文标签: