在javascript中覆盖css类

时间:2014-10-31 18:15:44

标签: javascript jquery css angularjs

JS(使用Angular / jQuery)是否有任何方法可以覆盖/更改或创建/删除CSS类?

我正在使用一个库,该库具有用于UI特定功能的预定义类。我希望用户能够指定CSS中定义的一些功能(例如颜色)。该库正在使用SVG,所以我不确定是否可以使用标准选择器方法添加另一个类(我没试过,但这可能是可能的)。

我还可以修改库以添加覆盖颜色的方法,但如果我可以在加载后轻松更改CSS类,这不是我的首选路径。

作为一个例子 - :

我可能有一个在我的CSS中定义的类 - :

.buttonclass { color: black; }

然后在库中使用此类(它实际上在SVG标记中使用)。我希望能够将color:属性更改为javascript中定义的属性,因为它是用户可配置的。

具体示例是该类用于定义SVG图形库中图形的颜色。库中没有方法可以更改行的颜色,但我希望用户设置它。

4 个答案:

答案 0 :(得分:0)

尝试 ng-class =" {[您的班级名称]:[您的$ scope变量] [operator] [Value]:[More option]}"

ng-class="{myclass: predicate == 'Date'}"

答案 1 :(得分:0)

你绝对可以在jQuery中这样做。

$('#some-element').addClass('some-class')
$('#some-element').removeClass('some-class')

答案 2 :(得分:0)

你说你正在使用角度。我建议ng-style

来自文档的示例: plunker

<input type="button" value="set color" ng-click="myStyle={color:'red'}">
<input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
<input type="button" value="clear" ng-click="myStyle={}">
<br/>
<span ng-style="myStyle">Sample Text</span>
<pre>myStyle={{myStyle}}</pre>

答案 3 :(得分:0)

考虑到您的情况,您可以手动将样式标记写入要使用angular覆盖的类的头部。

考虑到你的颜色示例,你可以这样做:

angular.element(document)
  .find('head')
  .append(
    '<style type="text/css">@charset "UTF-8";.buttonclass{color:'blue';}</style>'
  );

但是,我不会说这是一个非常好的解决方案,因为每次更改某些内容的颜色时,您的标题中最终都会出现一堆多余的样式标记,并且会更复杂css我确定会出现一些问题。

我会编写你自己的css文件并将其包含在项目中,并使用适当的属性,并使用angular来管理css类的更改。

<style>
.buttonclass.red { color: red; }
.buttonclass.blue { color: blue; }
</style>

<button ng-class="{'red': isRed, 'blue': isBlue}"></button>

如果您真的想要动态修改CSS规则,可以查看http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript