Обновить / пересчитать CSS - PullRequest
3 голосов
/ 28 июля 2011
<div id="box1">
    <div id="box2" style="height:60%"></div>
</div>

Обновление - Это оказалось глупо: был родительский div, который я не закрыл должным образом.Мне все еще любопытно, почему изменение некоторых CSS в веб-инспекторе удалось исправить.Спасибо всем!


Проблема возникает в браузерах webkit (Safari, Mobile Safari, Chrome, браузер Android), но не в Firefox:

При изменении размера окна высота box1 равнаизменено с помощью javascript, но box2 не расширяется и не сжимается до 60% от новой высоты box1, пока я не захожу в веб-инспектор и вручную изменяю любое правило css для любого элемента, если он не является атрибутом стиля этого элемента.(Таким образом, правило, которое я изменяю, должно происходить из встроенного файла css или файла .css - но не имеет значения, какой файл)

Что происходит?Почему это происходит?Если есть какой-то пересчет или обновление CSS, как я могу заставить это произойти при изменении размера окна?

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Я думаю, что это ошибка браузера.

Возможно, что-то вроде elemnt_box2.stye=element_box2.style вызовет обновление, но это будет обходной путь.

Имейте в виду, что обновления DOM из Javascript обрабатываются не полностью сразу, а после завершения выполнения скрипта. Это для эффективности. Это может означать, что каскадные изменения не видны сценарию до следующей точки входа.

0 голосов
/ 31 мая 2013

Оказалось, что-то глупое: был родительский div, который я не закрыл должным образом.Мне все еще любопытно, почему изменение некоторых CSS в веб-инспекторе удалось исправить.Спасибо всем!

0 голосов
/ 26 февраля 2013

У меня была похожая проблема, когда переключение float:left с последующим немедленным включением приводило к небольшому div прыжку вверх или вниз по линии, но, как здесь, только в Chrome, а не в Firefox. Решение, которое работало для меня, было удалено где-то еще clear:left.

...