2012-04-23 57 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>