TJ Crowder дал мне ответ на этот вопрос.Вот код, который реализует то, что я искал:
Шаг 1: получите таблицу стилей и конкретное правило, которое меня интересует:
var stylesheets = document.styleSheets;
var rule = document.styleSheets[0].cssRules[0];
Шаг 2: Доступ к этомуконкретное правило по-разному
rule.style.cssText // return the full text of that CSS rule
rule.selectorText // return the selector for that rule e.g. .myclass
Цикл по отдельным стилям:
var styleObj = rule.style;
for (var i = 0; i < styleObj.length; i++) {
var key = styleObj[i]; // key is the CSS property e.g. 'color'
var val = styleObj[key.toCamel()] // val is the CSS value e.g. 'red'
}
Обратите внимание, что вам нужно преобразовать свойство CSS в CamelCase для тех, у кого есть дефисы.Например, 'font-family' должен быть преобразован в 'fontFamily'
. По какой-то причине JavaScript и jQuery не имеют функций для этого (у Prototype), поэтому вы должны прикрепить эти расширения к классу String где-то всценарий
String.prototype.toCamel = function(){
return this.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');});
};
String.prototype.toDash = function(){
return this.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();});
};
Я получил это из блог Джеймса Робертса