Я хотел бы знать простой способ получить все правила и классы CSS на определенном узле DOM и поддереве программным способом.
Chrome Dev Tools
Проверка стиля элемента в инструментах Chrome Dev возвращает 2 панели
- Вычисленный стиль
- Стили
Панель стилей имеет 3 разные категории стилей:
- element.style
- Соответствующие правила CSS
- унаследованные от ....
Функция window.getMatchedCSSRules
довольно близко подходит к панели Matched CSS Rules в dev-tools.Я хочу перебрать элемент и его дочерние элементы и добавить соответствующие правила css в строку.
Эта обновленная скрипта объясняет и демонстрирует ожидаемый и нежелательный результат
Пример:
<a class="one to many">
<span class="even more">foo</span>
<span class="way muchMore"> bar</span>
</a>
Как я могу получить все CSS-классы с помощью стилей, как этот
a.one { color: red; }
.to { margin: 2em}
И так далее.Следующая функция довольно близка к ожидаемому результату:
// el = a DOM-Node document.getElementById(id);
function getCssText(el) {
var cssText = "";
var cssRuleList = window.getMatchedCSSRules(el, '');
for (var i = 0; i < cssRuleList.length; i++) {
cssText += cssRuleList[i].cssText + " ";
}
return cssText;
}
Александр указал на это обсуждение о window.getMatchedCSSRules (), возвращающее null
Есть ли у кого-нибудь плагинили более сложная функция для меня, чтобы получить классы css и значения domnode?