Ошибка IE CSS - Как сохранить позицию: absolute при изменении динамического содержимого javascript на странице

У меня есть страница, на которой есть столбец и div содержимого, примерно так:

<div id = "container">
    <div id = "content">blahblahblah</div>
    <div id = "column"> </div>
</div>

С некоторыми стилями у меня есть изображение, которое разделено между столбцом и содержимым, но должно поддерживать то же вертикальное позиционирование, чтобы оно выровнялось.

Стиль похож на этот:

#column 
{
    width:150px;
    height:450px;
    left:-150px;
    bottom:-140px;
    background:url(../images/image.png) no-repeat;
    position:absolute;
    z-index:1;
}

#container 
{
   background:transparent url(../images/container.png) no-repeat scroll left bottom;
   position:relative;
   width:100px;
}

Это отлично работает, когда контент в #content динамически загружается перед рендерингом. Это также всегда отлично работает в firefox. Однако в IE6 и IE7, если я использую javascript для изменения содержимого (и, следовательно, высоты) #content, изображения больше не выстраиваются в линию (#column не перемещается). Если я использую IE Developer Bar, чтобы просто обновить div (скажем, добавить позицию: absolute вручную), изображение скачет вниз и снова выровняется.

Что-то мне здесь не хватает?

@Ricky - Хм, значит, в данном случае, я думаю, решения нет. В лучшем случае после этого будет неровный матч, но по мере того, как мой контент будет расширяться и сжиматься и т. д., Скрытие / отображение не срабатывает. Тем не менее, спасибо за лучший ответ.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
0
1 401
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это ошибка в движке рендеринга. Я все время сталкиваюсь с этим. Один из возможных способов решить эту проблему - скрыть и показать div всякий раз, когда вы меняете содержимое (что, в свою очередь, меняет высоту):

var divCol = document.getElementById('column');
divCol.style.display = 'none';
divCol.style.display = 'block';

Надеюсь, это произойдет достаточно быстро, чтобы это было незаметно :)

Если вас беспокоит мерцание при отображении и скрытии divCol, вы можете настроить другое свойство css, и оно будет иметь тот же эффект. например

var divCol = document.getElementById('column');
divCol.style.zoom = '1';
divCol.style.zoom = '';

Другой обходной путь, который сработал для меня и не имел эффекта мерцания, заключался в добавлении и удалении фиктивного имени класса CSS, например, с помощью jQuery:

$(element).toggleClass('damn-you-ie')

Другие вопросы по теме