getComputedStyle возвращает CSSStyleDeclaration, но все свойства пусты при доступе
у меня есть простой div, который использует класс css, который, в свою очередь, имеет color
и background-color
набор свойств.
var div = document.createElement("div");
div.classList.add("my-css-class");
container.appendChild(div);
//This prints out a CSSStyleDeclaration object. This is a large object to which I see `color` and `backgroundColor`
console.log(getComputedStyle(div));
//this gives me an empty string
console.log(getComputedStyle(div).color);
//this gives me an empty string
console.log(getComputedStyle(div).getPropertyValue("color"));
Почему я не могу получить доступ к свойствам CSSStyleDeclaration? Я знаю, что он там с моего первого бревна. Я вижу color: "rgb(82, 194, 145)"
1 ответов
в конечном счете проблема с getComputedStyle
похоже, что рассматриваемый элемент должен быть частью DOMTree для того, чтобы любой стиль был доступен.
обратите внимание, что в моем случае я добавлял div в родительский контейнер, однако родительский контейнер в момент создания экземпляра еще не добавлен в DOMTree.
моя неспособность использовать JSON.stringify()
для печати объекта означало, что значения появлялись позже, но во время доступа были пустыми.
Итак, в основном, я изменил свой container.appendChild
to document.body.appendChild
временно, чтобы вычислить стиль, который мне нужен сразу, а затем удалить его и уничтожить, оставив мне только цвета, которые мне нужны.