代码之家  ›  专栏  ›  技术社区  ›  Matt Mitchell

ie css bug-如何维护位置:页面上动态javascript内容更改时的绝对位置

  •  2
  • Matt Mitchell  · 技术社区  · 16 年前

    我有一个页面,其中有一个列和一个内容分区,有点像这样:

    <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更改 γ含量 ,图像不再排列( #column 不动。如果我使用IE开发者栏来更新DIV(比如手动添加位置:绝对位置),那么图像会跳下并再次对齐。

    我这里有什么东西不见了吗?

    @里基-嗯,这意味着在这种情况下,我认为没有解决办法。在最好的情况下,之后会有一场精彩的对决,但是随着我的内容的扩展和收缩等,隐藏/展示并不实际。仍然感谢您用最好的解决方案回答。

    3 回复  |  直到 9 年前
        1
  •  3
  •   Ricky    16 年前

    这是渲染引擎中的一个错误。我总是碰到它。解决这个问题的一种可能的方法是在更改内容时隐藏和显示DIV(这反过来会更改高度):

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

    希望这种情况发生得足够快,以至于不明显。)

        2
  •  1
  •   Yousef Salimpour    14 年前

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

    $(element).toggleClass('damn-you-ie')
    
        3
  •  0
  •   tedL    15 年前

    如果您担心显示和隐藏divcol时出现闪烁,则可以调整另一个css属性,它将具有相同的效果。 例如

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