Как вытащить стили конкретного класса DOM?

Есть элемент типа:

<div class="classA classB classC"></div>
<style>
.classA{
color: green;
border-radius: 27%;
border: 3px solid lightblue;
}
</style>

Задача:
Вытащить(в массив) все стили класса .classA. Т.е. на выходе должно быть:

{
"color": "green",
"border-radius": "27%",
"border": "3px solid lightblue"
}
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Можно попробовать обшарить document.styleSheets:

const getClassStyles = className =>
  [...document.styleSheets].reduce((styles, { cssRules }) => {
    return [...cssRules]
      .filter(n => n.selectorText === `.${className}`)
      .reduce((styles, { cssText }) => {
        return (cssText
          .match(/[\w\-]+: [^;]+/g) || [])
          .map(n => n.split(': '))
          .reduce((styles, [ k, v ]) => (styles[k] = v, styles), styles);
      }, styles);
  }, {});


const styles = getClassStyles('class-name');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
netrox
@netrox
Если указать свойства:
api.jquery.com/css
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы