我在应用一种风格时遇到了麻烦!important
.我试过了:
$("#elem").css("width", "100px !important");
Run Code Online (Sandbox Code Playgroud)
这什么都不做 ; 没有任何宽度样式应用.是否有jQuery-ish方式应用这样的样式而不必覆盖cssText
(这意味着我需要先解析它等等)?
编辑:我应该补充一点,我有一个样式表!important
,我试图用!important
样式内联覆盖一个样式,所以使用等等.width()
不起作用,因为它被我的外部!important
样式覆盖.
此外,将覆盖以前的值的值进行计算,所以我不能简单地创建另一个外部风格.
(这是在chrome扩展中使用内容脚本)
我需要覆盖网页标记为的一些css属性!important
.这可能吗?
例如,如果我想摆脱标记为重要的边界:
$(".someclass").css('border','none'); //does not work
Run Code Online (Sandbox Code Playgroud) 我尝试使用以下代码注入样式:
document.body.style.color='green!important';
Run Code Online (Sandbox Code Playgroud)
根据CSS级联引用,通过应用!important
规则,我可以胜过原点和特异性.
我尝试使用Firefox Firebug将其注入www.google.com,但没有运气.
如何使用!important
规则注入前景色?
如果有一个CSS规则使用!important
,有没有办法删除!important
规则,以便我可以使用JS或jQuery进行进一步的下游样式更改?
theirs.css
div.stubborn { display: none !important; }
Run Code Online (Sandbox Code Playgroud)
mine.js
$('.stubborn').fadeIn(); // won't work because of !important flag
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法控制应用!important
规则的样式,所以我需要一个解决方法.
HTML:
<div id="test">This is a test</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var elem = document.getElementById('test');
elem.style.setProperty('color', 'green', 'important');
elem.style.color = 'red';
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/4fn6h/3/
Chrome,Safari和IE9中的文本为绿色,但Firefox和Opera中的文本为红色.(另外,IE7和IE8中的文本是黑色的,因为代码会抛出错误,但让我们忽略它...)
那么,哪些浏览器遵循此标准?是否可以覆盖setProperty(...,'important')
或不覆盖?
使用一个调用.jsp的插件,该插件使用外部托管的自己的样式表(它是一个yelp嵌入 - 试图操纵它的外观).我试图改变的一个元素上有一个!重要的标签,我似乎无法改变它......
我试过了
<script type="text/javascript">
$('.elementToChange').css({'background-color':'black'});?
</script>
Run Code Online (Sandbox Code Playgroud)
无济于事.想法?
我有一个参考CSSStyleRule
的JavaScript对象,我想更新的风格border-top-color
来red !important
.如果我分配值red
,则不会出现问题.如果我赋值red !important
,则忽略该值(即未分配).
myStyleSheetRule.style.borderTopColor = 'red'; // success
myStyleSheetRule.style.borderTopColor = 'red !important'; // fail
Run Code Online (Sandbox Code Playgroud)
如何设置!important标志?
请注意,必须通过以编程方式访问的样式表规则来完成.在我的用例中,我无法分配样式属性或其他任何内容.我在Windows 7上使用Chrome.
我想使用 javascript 代码编写一个内联样式可视化block !important
。代码看起来像这样
element.style.display = 'block !important'; // This does not work (Approach 1)
Run Code Online (Sandbox Code Playgroud)
然而,
element.style = 'display:block !important'; // works perfectly (Approach 2)
Run Code Online (Sandbox Code Playgroud)
但是方法 2 是不可接受的,原因很明显,它会覆盖早期的内联样式。您可以在 Jsbin 的这个DEMO 中看到这一点
Q1:如何display: block !important
使用 javascript设置属性并且它必须是内联的。
Q2: 我想知道为什么 Approach1 不起作用?
除了尝试添加之外我没有任何问题!important
.它不会采取.我需要添加它以动态覆盖字体大小.
以下是我调整风格的方法:
function newFont(newSizeA) {
var elems = document.getElementsByClassName('a');
for(i=0; i<elems.length; i++) {
elems[i].style.fontSize = newSizeA + 'px!important';
}
}
newFont(20);
Run Code Online (Sandbox Code Playgroud)
有了!important
它失败了,没有!important
它的工作原理.
编辑:这需要回到IE8,所以我希望有一个有人知道的跨浏览器解决方案.