У меня есть страница, на которой есть столбец и 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 - Хм, значит, в данном случае, я думаю, решения нет. В лучшем случае после этого будет неровный матч, но по мере того, как мой контент будет расширяться и сжиматься и т. д., Скрытие / отображение не срабатывает. Тем не менее, спасибо за лучший ответ.






Это ошибка в движке рендеринга. Я все время сталкиваюсь с этим. Один из возможных способов решить эту проблему - скрыть и показать 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')