Хотя MutationObserver позволяет отслеживать явные изменения размера атрибута HTMLElement, он, похоже, не имеет способа / конфигурации, позволяющего мне отслеживать неявные изменения его размера, которые вычисляются браузером.
Вот пример:
const observer = new MutationObserver(changes => {
console.log('changed')
})
observer.observe(document.querySelector('#bar'), {
attributes: true
})
document.querySelector('#foo').style.width = '200px'
.container {
display: flex;
align-items: stretch;
}
.child {
width: 100px;
height: 100px;
margin: 0 2px;
background: magenta;
}
<div class="container">
<div class="child" id="foo"></div>
<div class="child" id="bar"></div>
</div>
В приведенном выше примере я изменяю размер #foo
, наблюдая за #bar
.#bar
get сжимается на #foo
(ширина изменяется неявно, поскольку браузер вычисляет его ширину, а не я явно указываю его).
Как я могу обнаружить такие неявные изменения размера?