Как достать из css файла все уникальные цвета используемые там?

Вот через этот api достаю стили из файла css
const doc = document.styleSheets[0];
console.log(doc);

Теперь нужно создать массив из уникальных цветов, используемых в этом файле. Как это сделать?
Например, нужен на выходе массив с примерно такого типа:
const colors = [ white, rgb(195,228,255), green, #64FF7E, #FF2323 ]
  • Вопрос задан
  • 323 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
[...document.styleSheets[5].cssRules]
  .map(c => c.style)
  .map(c => Object.entries(c)
    .filter(ent => ent[0].toLowerCase().includes('color') && !!ent[1]))
  .flat()
  .map(prop => prop[1])
  .flat()


потестил на фейсбуке, где есть в css цвета там работает, где нет - там вываливается с ошибкой

5d7d36ea8c21a558107784.png

5d7d372b92736476989624.png

массив из уникальных цветов

uniqueArray = [...new Set(notUniqueArray)]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lazalu68
@lazalu68
Salmon
Hsl/a, rgb/a, hex3/4/6/8 можно собрать относительно простыми регулярками, а цвета прямо по ключевым словам придётся таскать из таблицы наверное. Можно подойти с другой стороны: не конкретные форматы искать, а просто пройтись по списку всех нужных цветовых свойств, например искать только цвета указанные в color, background-color, border-color

UPD: оказывается существует некий css-color-extractor который этим и занимается
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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