IE CSS错误-如何保持位置:页面上的动态javascript内容更改时是绝对的

时间:2020-03-05 18:44:48  来源:igfitidea点击:

我有一个页面,其中有一个列和一个内容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(例如,手动添加位置:绝对),则图像会跳下并重新排列。

这里有我想念的东西吗?

@Ricky Hmm,这意味着在这种情况下,我认为没有解决方案。最好的时候会出现锯齿状的对决,但是随着我内容的扩展和收缩等,隐藏/显示并不可行。仍然感谢我们提供最佳解决方案。

解决方案

回答

它是渲染引擎中的错误。我一直都在碰它。解决此问题的一种可能方法是,每当我们更改内容时都会隐藏并显示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 = '';

回答

另一个对我有用且没有闪烁效果的解决方法是使用jQuery添加和删除虚拟CSS类名称:

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