I write following function to return the width and height of a text:
function size_calculation(word,fontSize) { const div = document.body.appendChild(document.createElement('div')); div.textContent = word; div.style.cssText = ` font-size:${fontSize}px; width:auto; position:absolute; visibility:hidden; ` const computed_styles = window.getComputedStyle(div); //return the expected height console.log(computed_styles.getPropertyValue('height')) div.remove(); //return nothing console.log(computed_styles,computed_styles.getPropertyValue('height')) return ({ height: computed_styles["height"], width:computed_styles["width"] }) } console.log(size_calculation("hi",15))
I am quite confused why after I remove the div
, all styles’ property in the computed_styles
will become ""
nothing, but before I remove the div
, all styles’ property in the computed_styles
has something different than ""
.
In my understanding, the value for variable will not be changed and is static unless we write any update or reassign statement once declared (AM I Wrong?)
Why the computed_styles will be automatically update?
Thank you!
P.S: not asking for solution (solution quite easy), but curious why.
Advertisement
Answer
See MDN
Return value: A live CSSStyleDeclaration object, which updates automatically when the element’s styles are changed.
Note the word live.