对于用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 – 为什么不鼓励使用`!important`?
- css – !important规则是否会覆盖媒体查询?
- CSS 之!important_html/css_WEB-ITnose
- CSS优先级与!important
用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`?
解决方法
如果您使用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规则是否会覆盖媒体查询?
例如:
a{ color:#0000FF!important; } @media (max-width: 300px){ a{ color:#FF0000; } }
解决方法
@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
今天写代码,碰到一个关于!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或jQuery覆盖!important和css嵌套书写格式的分享已经结束,谢谢您的关注,如果想了解更多关于css – 为什么不鼓励使用`!important`?、css – !important规则是否会覆盖媒体查询?、CSS 之!important_html/css_WEB-ITnose、CSS优先级与!important的相关知识,请在本站进行查询。
本文标签: