2012-04-23 80 views
11

我想分裂一個TD(表格單元格)看起來好像它是兩個單元格。問題是,當細胞在高度生長時,我不能讓兩個div在裏面佔據所有可用的高度。由於這些細胞可以動態增長,所以我無法設置固定的高度(這可以解決問題)。在兩個拆分td

這裏是我的代碼:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
    td { border: 1px solid black; width: 50px; text-align: center; margin:0; padding:0 } 
    #span1 { background-color: #DDD; width: 25px; float: right; } 
    #span2 { background-color: #EEE; width: 24px; float: left; } 
    .t { border-top: 1px solid black; } 
    .r { border-right: 1px solid black; height: 100%; } 
</style> 
</head> 
<body> 
    <table> 
    <tbody> 
     <tr> 
     <td>1</td><td>2</td><td>3<div><div id="span1" class="t">1</div><div id="span2" class="t r">1</div></div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2 2 2 2 2 22 2 </td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2 2 2 2 2 2 2 2 </td><td><span style="line-height:2"><div id="span1">3</div><div id="span2" class="r">3</div></span></td><td>4</td> 
     </tr> 
    </tbody> 
    </table> 
</body> 
</html> 

這是它的外觀:

current table view

我不希望看到在列那些白色的差距3.

任何想法如何解決這個問題? 我一直在與CSS鬥爭了一段時間,目前還沒有運氣......

謝謝!

+0

而實際上分裂TDS是不是一種選擇?然後,頂部的「3」可以與「colspan =」2「'在一起。 – 2012-04-23 18:09:40

+0

你的意思是,通過使用colspan和/或rowspan?如果是這種情況,那麼不,這不是一種選擇。雖然我可以把任何我想要的單元格內(無需修改列數/行數) – 2012-04-23 18:12:04

回答

12

你應該設置高度TD高度= 100%,.span1設置高度爲100%,那麼試試這個,你可以得到答案..

<html> 
<head> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
    td { border: 1px solid black; width: 50px; text-align: center; margin:0; padding:0; height:100%; } 
    #span1 { background-color: #DDD; width: 25px; float: right; height:100%; } 
    #span2 { background-color: #EEE; width: 24px; float: left; } 
    .t { border-top: 1px solid black; } 
    .r { border-right: 1px solid black; height: 100%; } 
</style> 
</head> 
<body> 
    <table> 
    <tbody> 
     <tr> 
     <td>1</td><td>2</td><td>3<div><div id="span1" class="t">1</div><div id="span2" class="t r">1</div></div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2 2 2 2 2 22 2 </td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td> 
     </tr> 
     <tr> 
     <td>1</td><td>2 2 2 2 2 2 2 2 </td><td><span style="line-height:2"><div id="span1">3</div><div id="span2" class="r">3</div></span></td><td>4</td> 
     </tr> 
    </tbody> 
    </table> 
</body> 
</html> 
+0

確實。這確實有用!非常感謝你! – 2012-04-23 22:57:01

2

嘗試設置

display:inline-block 

可能會或可能不會還需要添加高度100%爲好。

也有沒有辦法你可以簡單地添加2個TD而不是試圖模仿2?

+0

它也行不通... – 2012-04-23 18:19:37

0

你可以在表格單元格內放置一個表格,然後你可以做任何你想要的內部表格,比如頂部行的td colspan="2",底部行的td td(這讓我想起了表格佈局的醜陋日子,但無論你的作品!)

+0

我相信必須有更好的方式來做到這一點...但是,謝謝你的建議 – 2012-04-23 18:18:46

+1

不,他是對的,你很可能需要刪除裏面所有的填充/邊界,但是這聽起來是正確的。 html =表中常見的經驗法則是邪惡的,永遠不會做你想要的東西,如果可能的話。採取任何人給你的解決方案將工作 – 2012-04-23 18:53:37

0

我也一直在尋找分割TD(表格數據單元)的方法。看了很多帖子,經過幾次失敗嘗試後,我終於破解了它。非常感謝之前發佈的所有人,因爲我能夠將這些點連接起來。

您需要考慮兩件事情,即影響標題行和生成的數據行。我的意思是,使用'colspan'的第一行[Affecting Header Row]中的單元格直接影響它們下方的行中的單元格[結果數據行]。因此,例如,如果我的結果行(第二行)必須包含分裂TD,那麼它受到上面在其TD(第一行)中使用'colspan'的行的影響。但是,如果下一行(第三行)必須不受第一行中的「colspan」影響,則下一行(第三行)中的單元格必須與第一行中的單元格具有相同的「colspan」屬性,這可以防止他們從分裂,並使他們'跨越'的經常差距。

在圖片[點擊鏈接查看圖片]中,我只有2列[第2和第4列],它們正在分裂它們之下的TD。在第一行中,我使用'colspan'來影響下面的行。但是,我不希望第2行和第3行分裂,所以它們與第1行具有相同的'colspans'。我希望在第4行和第5行[當然只有第2和第4列]中分割單元格,所以爲了實現這一點,它們不包含'colspan'屬性,這使得它們受到上面行的影響,合併單元格」。第6行不受前面行中的'colspans'影響,因爲它包含與前3行相同的'colspan'屬性。第7行和最後一行包含拆分TD,因爲它與第4行和第5行不同,不包含「colspans」。這可能聽起來令人困惑,但如果你看圖像並嘗試源代碼,我想你會很高興。我希望這有幫助。

https://www.flickr.com/photos/[email protected]/sets/72157651047314439/

<table border="1px solid" cellspacing="5" bordercolor="#000000" width="959" cellpadding="5"> 
    <tr align="justify" valign="top"> 
    <td valign="middle" bgcolor="#FFFFFF" width="210"><h4 style="color:#000000" align="center">Nothing Special Here</h4></td> 
    <td colspan="2" valign="middle" bgcolor="#6E7F8B"><h4 style="color:#FFFFFF" align="center">Colspan=&quot;2&quot;</h4></td> 
    <td valign="middle" bgcolor="#6E7F8B" width="191"><h4 style="color:#FFFFFF" align="center">No Colspan Here</h4></td> 
    <td colspan="2" valign="middle" bgcolor="#6E7F8B"><h4 style="color:#FFFFFF" align="center">Colspan=&quot;2&quot;</h4></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    <td width="191" valign="middle"><p align="center">No Colspan Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    <td width="191" valign="middle"><p align="center">No Colspan Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td width="129" valign="middle"><p align="center">Nothing Special</p></td> 
    <td width="120" valign="middle"><p align="center">Nothing Special</p></td> 
    <td width="191" valign="middle"><p align="center">Nothing Special</p></td> 
    <td width="99" valign="middle"><p align="center">Nothing Special</p></td> 
    <td width="101" valign="middle"><p align="center">Nothing Special</p></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td width="101" valign="middle"><p align="center">Nothing Special</p></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    <td valign="middle"><p align="center">No Colspan Here</p></td> 
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td> 
    </tr> 
    <tr class="gray1" valign="top" align="justify"> 
    <td valign="middle"><p align="justify">Nothing Special Here</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td> 
    <td valign="middle"><p align="center">Nothing Special</p></td>   
    </tr> 
</table>