位置:绝对;内部动态位置:相对;元件

时间:2011-06-27 14:50:57

标签: html css internet-explorer-7 internet-explorer-6

这是一个IE7错误:

我有一张桌子,我推到另一张<tbody>。好吧,问题是在细胞内我有一个位置:相对; div和div里面我有几个position:absolute; div。

问题在于它们被渲染为好像父div不是位置:相对,这意味着,完全位于屏幕的左上角。为什么?!?!

在ff中,chrome工作正常,但在IE7我得到了这些烦人的东西。我已经尝试将hasLayout放在任何地方,但它只是不起作用。

这就是我所拥有的:

<table>
    <thead></thead>
    <tbody id="mtbody">
    </tbody>
</table>

这就是我收到并推送到“mtbody”(样本):

<table id="testando">
<tr>
        <td hasLayout="true" class="uhr sl" colspan="7" style="border-bottom: dashed 1px #dddddd; background-color: #eeffee;">
            <div style="overflow: hidden;" class="holdU" hasLayout="true" betriebsId="83113" betriebsName="2nd Level">
                <div hasLayout="true" class="uhr filled0sl" style="width: 679px; left: 0px;">
                </div>


                    <div hasLayout="true" class="border" style="left: 96">
....

所以类“holdU”是位置:relative,而类“uhr”是position:absolute,它们现在位于我的左上角,有点看不见。

我该如何解决这个问题?

更新:

所以基本上这是预期的结果:http://jsfiddle.net/kgT6E/(来自DanielB)。但我不是那个。想象一下,这个绿色方块现在距离边界100px,但不是包裹红色方块,而是留在左上角,因为位置:相对于绿色方块没有任何影响。

这是我用来将内容加载到表中的代码:

$.get(savedUrl, function(res) {
        var div = $("<div>").html(res);
// this is because I get other stuff together, but what I really want is the tbody content.
        $("#mtbody").html($(div.find("tbody").get(0)).html());
});

之前,我正在把所有东西装到tbody,     $( “#mtbody”)。负载(savedUrl)

但是IE7并没有认识到TR和TD,所以我不得不将它们包装在一张桌子里。现在我从这个位置得到了这个奇怪的定位:绝对的div。

UPDATE2:我已经尝试了所有单位(23 px )但到目前为止没有运气。我认为这是因为我必须首先将它包装在一个div中,当我这样做时,这些位置不会更新......来自IE的真奇怪和讨厌的bug .. = /

2 个答案:

答案 0 :(得分:2)

这不是IE7的错误。如果你的HTML和CSS有效,那就可以了。

查看this example

此外,您不应将<table>放入<tbody><tbody>应该只有<tr>个孩子。

修改

此外,您的内联样式定义缺少度量单位。

<div hasLayout="true" class="border" style="left: 96">

应该是

<div hasLayout="true" class="border" style="left: 96px">

答案 1 :(得分:0)

所以在挖了一下后,我发现了div.uhr风格的一个非常令人讨厌的“浮动:左”。 基本上,这打破了IE7中的所有布局,使得“position:absolute”的div出现在屏幕之外。

所以人们,要小心吧! ; d