如何通过jQuery从CSS类访问属性?我有一个CSS类,如:
.highlight { color: red; }
我需要对一个对象进行彩色动画处理:
$(this).animate({ color: [color of highlight class] }, 750);
这样我就可以从CSS 更改为red,blue并且动画将按照CSS进行工作。
red
blue
一种方法是在highlight类中放置一个不可见的元素,然后获取要在动画中使用的元素的颜色,但是我想这是非常非常糟糕的做法。
highlight
有什么建议么?
我编写了一个小函数,该函数遍历文档上的样式表以查找匹配的选择器,然后查找样式。
需要注意的是,这仅适用于使用样式标签定义的样式表或同一域中的外部表。
如果知道工作表,则可以将其传递进来,从而不必再查看多个工作表(更快,并且如果您有冲突规则,则更为准确)。
我只在jsFiddle上测试了一些较弱的测试用例,请让我知道这是否适合您。
function getStyleRuleValue(style, selector, sheet) { var sheets = typeof sheet !== 'undefined' ? [sheet] : document.styleSheets; for (var i = 0, l = sheets.length; i < l; i++) { var sheet = sheets[i]; if( !sheet.cssRules ) { continue; } for (var j = 0, k = sheet.cssRules.length; j < k; j++) { var rule = sheet.cssRules[j]; if (rule.selectorText && rule.selectorText.split(',').indexOf(selector) !== -1) { return rule.style[style]; } } } return null; }
用法示例:
var color = getStyleRuleValue('color', '.foo'); // searches all sheets for the first .foo rule and returns the set color style. var color = getStyleRuleValue('color', '.foo', document.styleSheets[2]);
我忽略了考虑分组规则。我将选择器检查更改为此:
if (rule.selectorText.split(',').indexOf(selector) !== -1) {
现在它将检查分组规则中的任何选择器是否匹配。