2013-07-07 50 views
0

我有一個div內的表,並且表不會填充容器div。爲什麼不?爲什麼我的絕對定位表不填充它的容器div?

HTML:

<div class="fill"> 
    <table class="table"> 
    ... 
    </table> 
</div> 

CSS:

.fill { 
    position:relative; 
    width:100%; 
    height:100%; 
} 

.table { 
    position:absolute !important; 
    left:0 !important; 
    right:10px !important; 
    bottom:0 !important; 
    top:39px !important; 
} 

表僅填充容器的div一小部分。爲什麼?

更新: 或者,如果我嘗試以下操作,它在Firefox中不起作用,但它在Chrome中起作用。

HTML:

<div class="fill"> 
    <div class="wrap"> 
    <table class="table"> 
     ... 
    </table> 
    </div> 
</div> 

CSS:

.fill { 
    position:relative; 
    width:100%; 
    height:100%; 
} 

.wrap { 
    position:absolute; 
    left:0; 
    right:0; 
    top:39px; 
    bottom:0; 
} 

.table { 
    position:relative; 
    height:100%; 
    width:100%; 
} 

這第二個版本是更接近我想要的(因爲它在Chrome瀏覽器)。

回答

0

表格很特別,它們不像其他的塊元素。通常情況下,一張桌子的寬度足以容納其中的內容,而不再是其他內容。爲表格設置100%的寬度應該強制它填充分配給它的空間。

+0

我加入''寬度= 「100%」''到第一版本我有以上,並且寬度是好的,但在高度不擴大。 –

+0

這是因爲該位置:絕對 – jaredwilli

0

。表上,把寬度= 100%

您可能必須設置爲TD的寬度以及..根據使您的佈局結構

0

表中的您的父母DIV的寬度和100%的高度,這將是無論父母的元素是什麼。該表不需要位置:絕對,因此不需要有頂部,左側,右側,底部設置。

table { 
    border: 1px solid blue;  
    width: 100%; 
    height: 100%; 
    margin: 0; 
} 

這裏是我的,你想要什麼小提琴,減去頂部和右側抵消你。 http://jsfiddle.net/jaredwilli/5s4DD/

您可以改爲使用邊距來設置頂部和右側,但是您不能使用100%寬度,這是行不通的。你可以使用display:inline-block,而不是100%的寬度,而是動態地將寬度設置爲比使用javascript的填充div寬度的寬度小10px,但那是另一回事。頂級定位也一樣。你也可以做其他一些事情,但是有很多事情需要你去做。

此外,您可以使用表格,除非在頁面中有多個表格,否則不需要類別。 並從您的CSS中刪除所有!important。 從來沒有必要使用!重要的,只是說。

+0

這在Chrome中看起來很完美(使用更新版本)。問題是,在Firefox中,表格高度超出(低於)父div。 Chrome似乎是對的。代碼對我來說似乎合乎邏輯,但Firefox自己做。 –

+0

我使用的是Chrome 27,並且表格在父div下面延伸*,因爲它應該是。*父頁面的靜態高度爲400px,表格爲100%,頂部邊距爲39px,表示39px的表格應該超出父母(給予或承擔)。 – tuespetre

+0

是的,這是正確的。這也是它應該如何在Chrome中。我的意思是,如果你想讓表格偏移右側和頂部,原始代碼是'top:39px和right 10px',那麼你需要用JS編程設置寬度和高度,父div的寬度和高度,並從中減去39和10 px來設置表格。但你還需要做其他一些事情才能使它工作,最有可能的就是這樣。 – jaredwilli

2

在問候你原來的問題,這是回答你「爲什麼不」:

如果沒有指定包含塊的高度明確 (即,它取決於內容的高度),並且此元素不是 的絕對定位,值計算爲'auto'。

來源:http://www.w3.org/TR/CSS2/visudet.html#the-height-property

你「補」的div設置爲100%的高度,但什麼是它的父元素的高度設置爲?如果它的父元素的高度也是一個百分比,那麼父元素的高度是多少?

爲您的更新示例添加邊框,您可以看到,'fill'的高度爲0,因爲它沒有指定高度的父項,所以'wrap'的高度也爲零。添加一個父包裝來包裝整個示例,高度爲500px左右,並且在至少Firefox(Firefox)和Chrome中按預期工作。

CSS:

.fill { 
    position:relative; 
    width:100%; 
    height:100%; 
    border: 1px solid red; 
} 

.wrap { 
    position:absolute; 
    left:0; 
    right:0; 
    top:39px; 
    bottom:0; 
    border: 1px solid blue; 
} 

.table { 
    position:relative; 
    height:100%; 
    border: 1px solid green; 
} 
.parent { 
    height: 300px; 
} 

HTML:

<div class="parent"> 
<div class="fill"> 
    <div class="wrap"> 
    <table class="table"> 
     <tr><td>...</td></tr> 
    </table> 
    </div> 
</div> 
</div> 
+0

如果您不斷向父母添加百分比高度,最終您會到達根元素。 (即有效HTML中的'html'元素)。根元素上的百分比高度是「初始包含塊」高度的百分比,該高度始終與視口的高度相同。 – Alohci

+0

這是正確的。 – tuespetre

相關問題