2011-06-27 32 views
0

這是一個IE7的bug:職位:絕對;內動態:相對;元素

我有一張表,我推到另一個<tbody>。好的,問題是在單元格內有一個位置:relative; div和這個div裏面我有其他幾個position:absolute; divs。

事情是,他們被渲染,如果父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」 的位置是:相對的,和「uhr」類是絕對的,他們現在在我的左上角,有點不可見。

我該如何解決這個問題?

UPDATE:

所以基本上這是預期的結果: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 .. =/

+1

你能想出一個簡單的例子來演示jsfiddle.net上的這種行爲嗎? – StriplingWarrior

回答

0

所以挖了一下,我發現了一個很討厭的後:在div.uhr風格「浮動左」。 基本上,這是打破了IE7的所有佈局,使div的「位置:絕對」出現在屏幕之外。

所以人們,照顧它! ; D

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"> 
+0

嘿,感謝您的資訊,請檢查我的更新 –

+0

也許您可以在小提琴中發佈完整的HTML。 – DanielB

+0

看起來像這樣:http://jsfiddle.net/XxSdR/ –

相關問題