2012-04-23 34 views
11

Tôi đang cố gắng tách một TD (ô bảng) để trông giống như là hai ô. Vấn đề là khi các tế bào phát triển trong chiều cao, tôi không thể làm cho hai divs bên trong để chiếm tất cả chiều cao có sẵn. Khi các ô này có thể phát triển động, tôi không thể đặt chiều cao cố định (hoặc có thể giải quyết vấn đề).Chia td thành hai số

Dưới đây là mã của tôi:

<!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> 

Đây là cách nó trông:

current table view

Tôi không muốn nhìn thấy những khoảng trống màu trắng trong cột 3.

Bất kỳ ý tưởng nào để giải quyết vấn đề này? Tôi đã chiến đấu với CSS trong một thời gian mà không có may mắn cho đến nay ...

Cảm ơn !.

+0

Và trên thực tế tách tds không phải là một lựa chọn? Sau đó, "3" trên đầu trang có thể là một td với 'colspan =" 2 "'. –

+0

Bạn có nghĩa là, bằng cách sử dụng colspan và/hoặc rowspan? Nếu đó là trường hợp thì không, đó không phải là một lựa chọn. Mặc dù tôi có thể đặt bất cứ điều gì tôi muốn bên trong các tế bào (mà không sửa đổi số cột/hàng) –

Trả lời

12

bạn nên thiết lập chiều cao td height = 100%, và .span1 thiết height = 100% sau đó cố gắng này, bạn có thể nhận được câu trả lời ..

<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

Thật vậy. Điều này không hoạt động !. Cảm ơn nhiều! –

2

Hãy thử thiết

display:inline-block 

có thể hoặc không cũng cần phải thêm chiều cao 100% là tốt.

Cũng không có cách nào bạn có thể chỉ cần thêm 2 td thay vì cố gắng bắt chước 2 ??

+0

Nó không hoạt động ... –

0

bạn có thể đặt một bảng bên trong ô bảng đó, sau đó bảng bên trong bạn có thể thực hiện bất kỳ thứ gì bạn muốn, như td colspan="2" cho hàng trên cùng và td td cho hàng dưới cùng (điều này nhắc tôi nhớ những ngày xấu xí của bố cục bảng) , nhưng bất cứ điều gì làm việc cho bạn!)

+0

Tôi tin rằng phải có một cách tốt hơn để làm điều đó ... nhưng, cảm ơn đề xuất của bạn –

+1

không đúng, bạn rất có thể sẽ cần xóa tất cả các phần đệm/lề trong bảng đi vào bên trong nhưng có điều này nghe đúng. nguyên tắc chung của ngón tay cái trong html = bảng là ác và không bao giờ làm những gì bạn muốn họ quá, tránh nếu có thể. Thực hiện bất kỳ giải pháp nào mà ai đó cung cấp cho bạn sẽ hoạt động –

0

Tôi cũng đã tìm kiếm một cách để tách một TD (Table Data Cell). Sau khi đọc nhiều bài viết và sau một vài lần thất bại, cuối cùng tôi đã bẻ khóa nó. Rất cám ơn tất cả những người đã đăng trước đó, vì nó là tín dụng của bạn mà tôi đã có thể kết nối các dấu chấm.

Có hai điều bạn cần lưu ý, Ảnh hưởng đến Hàng tiêu đề và Hàng dữ liệu kết quả. Ý tôi là, các ô ở hàng trên cùng [Ảnh hưởng đến hàng tiêu đề] sử dụng 'colspan' trực tiếp ảnh hưởng đến các ô trong hàng bên dưới [Hàng dữ liệu kết quả]. Vì vậy, ví dụ, nếu hàng kết quả của tôi (hàng thứ 2) phải chứa TD phân chia, thì nó bị ảnh hưởng bởi hàng ở trên sử dụng 'colspan' trong số TD của nó (hàng thứ nhất). Nhưng nếu hàng sau (hàng thứ 3) không bị ảnh hưởng bởi 'colspan' từ hàng thứ nhất, các ô trong hàng tiếp theo (hàng thứ 3) phải có cùng thuộc tính 'colspan' như các ô trong hàng thứ nhất, điều này ngăn chúng bị tách ra và làm cho chúng 'giãn' khoảng cách thông thường.

Trong hình ảnh [nhấp vào liên kết để xem hình ảnh], tôi chỉ có 2 cột [cột thứ 2 và thứ 4] đang tách TD bên dưới chúng. Trong hàng đầu tiên tôi sử dụng 'colspan' để ảnh hưởng đến các hàng bên dưới. Tuy nhiên, tôi không muốn các hàng thứ 2 và thứ 3 tách ra, vì vậy chúng có cùng 'colspans' làm hàng thứ nhất. Tôi KHÔNG muốn chia các ô trong hàng thứ 4 và thứ 5 [chỉ trong cột thứ 2 và thứ 4], do đó, để thực hiện điều này, chúng không chứa thuộc tính 'colspan', khiến chúng bị ảnh hưởng bởi các hàng phía trên chúng sử dụng ' colspan '. Hàng thứ 6 không bị ảnh hưởng bởi 'colspans' từ các hàng trước, bởi vì nó chứa các thuộc tính 'colspan' giống như 3 hàng đầu tiên. Hàng thứ 7 và cuối cùng chứa TD phân chia vì nó giống như hàng 4 và 5, không chứa 'colspans'.Điều này nghe có vẻ khó hiểu, nhưng nếu bạn nhìn vào hình ảnh và thử mã nguồn, tôi nghĩ bạn sẽ rất hài lòng. Tôi hi vọng cái này giúp được.

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>