Проблема решена.
Про то, как делать правильно я даже не вспомнил. Наверно из-за хронической лени
Так все работает
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<style id=stv>
#el{
width: 100px;
height: 50vh;
}
.cl {
width: 300px;
height: 100em;
color: rgb(255,220,220);
--var1: 100px;
}
</style>
</head>
<body>
<script>
let getStyle = (st, sel, name) => {
const rules = st.sheet.cssRules
for (let i=0; i<rules.length; i++) {
if (sel == rules[i].selectorText) {
return rules[i].style.getPropertyValue(name)
}
}
}
let st = document.getElementById('stv')
console.log('#el', 'width:', getStyle(st, '#el', 'width')) // 100px
console.log('.cl', 'color:', getStyle(st, '.cl', 'color')) // rgb(255,220,220)
console.log('.cl', '--var1:', getStyle(st, '.cl', '--var1')) // 100px !!!
</script>
</body>
</html>
style[name] - дает только обычные свойства
getPropertyValue(name) дает все, и обычные и переменные.
Но лишних 15 знаков написать - это тяжко бывает.