Для чтения стиля используйте document.styleSheets
, который содержит всю информацию (let cssArr=...
во фрагменте).Когда вы читаете его в свой массив, вы можете генерировать строку из этого массива (let genCssStr
во фрагменте).Цвета, читаемые таким образом, имеют формат, например rgb(255, 255, 255)
, поэтому нам нужно преобразовать их в шестнадцатеричные (rgbToHex
src здесь )
const rgbToHex = (rgbStr) => rgbStr && '#'+rgbStr.slice(4,-1).split(',').map(x => (+x).toString(16).padStart(2, '0')).join('');
const styles = document.styleSheets;
let cssArr =[...styles[0].cssRules].map(x=> ({
class: x.selectorText,
color: rgbToHex(x.style.color),
background: rgbToHex(x.style.background),
}));
let genCssStr=''; cssArr.forEach(x=> genCssStr+=`
${x.class} {
${(x.background ? 'background: '+x.background : '')}
${(x.color ? 'color: '+x.color : '')}
}
`.replace(/^ \n/gm,'')); // remove empty lines
console.log("array:", JSON.stringify(cssArr));
console.log("text:\n", genCssStr);
body {
background: #fff;
}
.aaa {
background: #dedede;
color: #000
}
.text {
color: #333;
padding: 10px
}