2009-07-31 29 views
10

Tôi có 2 bảng HTML nằm ngay trên đầu trang của nhau. Mỗi bảng có cùng số cột, nhưng văn bản mà chúng chứa có thể khác nhau. Và mỗi bảng có thể chứa nhiều hàng. Tôi muốn cho 2 bảng này có cùng chiều rộng cột giống nhau để các cột luôn xếp hàng. Tôi không quan tâm nếu văn bản trong các cột kết thúc tốt đẹp nhiều như cần thiết. Và tôi không thể kết hợp tất cả các hàng thành một bảng đơn vì những lý do khác.Làm cho 2 bảng có cùng kích thước cột

Có cách nào để thực hiện điều này không?

Lưu ý rằng giải pháp này chỉ hoạt động trong Firefox và 2 phiên bản cuối cùng của IE.

+2

Chỉ cần tò mò về lý do không kết hợp tất cả các hàng vào một bảng duy nhất, vì điều đó có thể đã được đề nghị của tôi ? đặt từng bộ hàng vào phần tử của riêng nó và thêm một bộ tiêu đề vào mỗi tbody có thể tạo ra một số kết quả tốt. – belugabob

+0

Chúng tôi đang sử dụng thư viện Javascript hiện có để hiển thị/ẩn các bảng dữ liệu dựa trên các điều kiện khác nhau. Nó hoạt động trên toàn bộ bảng tại một thời điểm. Tôi thực sự không muốn phải đi vào và sửa đổi thư viện đó nếu có một cách để có được kết quả bằng cách sử dụng HTML và/hoặc CSS. – Shane

+1

Ah, tôi hiểu - điều đó làm cho cuộc sống khó xử cho bạn. Giải pháp ít gây khó chịu hơn là buộc chiều rộng của cột thành giá trị đã biết và tôi khuyên bạn nên làm điều này với kiểu CSS, chứ không phải kiểu nội tuyến, vì điều này có nghĩa là bạn có thể thay đổi giá trị ở một nơi nhưng vẫn ảnh hưởng đến mọi bảng. Nếu bạn quyết định điều tra phương pháp tiếp cận bảng duy nhất, bạn sẽ có thể ẩn hiệu quả 'toàn bộ bảng' bằng cách ẩn phần tbody tương ứng với bảng logic. – belugabob

Trả lời

2

Theo như tôi biết, bạn không thể căn chỉnh các cột của hai bảng.

Bạn có thể tạo một bảng và sử dụng css để làm cho nó trông giống như hai.

<table> 
    <tr> <!-- First table header --> </tr> 
    <tr> <!-- First table rows... --></tr> 
    <tr> <!-- First table footer... --></tr> 
    <tr> <!-- Empty space between tables --> </tr> 
    <tr> <!-- Second table header --> </tr> 
    <tr> <!-- Second table rows... --></tr> 
    <tr> <!-- Second table footer... --></tr> 
</table> 
+0

Tôi đã làm điều này trước đây với CSS tạo đường viền nếu cần. Nó cảm thấy như một trò lừa đảo, nhưng nó đã làm việc cho tôi. –

4

Tôi khuyên bạn nên sử dụng độ rộng phần trăm trên các cột của mình, đảm bảo rằng các chiều rộng đó luôn thêm tối đa 100%.

<style type="text/css"> 
    table { width: 100%; } 
    td.colA { width: 30%; } 
    td.colB { width: 70%; } 
</style> 

<table> 
    <tr> 
    <td class="colA">Lorem ipsum</td> 
    <td class="colB">Lorem ipsum</td> 
    </tr> 
</table> 

<table> 
    <tr> 
    <td class="colA">Lorem ipsum</td> 
    <td class="colB">Lorem ipsum</td> 
    </tr> 
</table> 
+0

Điều này hoạt động IF: (1) bạn chấp nhận kích thước cố định (có, tỷ lệ phần trăm vẫn cố định theo nghĩa là trình duyệt không chọn nó, tác giả trang đang chọn nó), (2) thư viện đặt các lớp trên các cột của nó cho bạn để kiểm soát bằng CSS, (3) nếu kích thước bạn chọn không quá nhỏ đối với ô có từ đơn dài nhất. VÀ, cho đến nay, là giải pháp dễ nhất mà tôi đã thấy. –

0

Các ô bảng là chất lỏng, vì vậy không thể chỉ trong html/css trừ khi bạn cung cấp cho cột một chiều rộng cố định (cố định tất nhiên cũng là phần trăm). Tất nhiên, bạn có thể sử dụng javascript để tìm bảng rộng nhất, có chiều rộng cột và sử dụng các giá trị đó cho bảng nhỏ hơn, nhưng giải pháp được belugabob đề xuất là nhận xét cho câu hỏi của bạn tốt hơn nhiều.

0

Tôi có tình huống tương tự được sửa cho trang web của mình trên IE 9, Chrome 14 và FireFox 8 với sau Bảng của tôi chứa bốn cột, các cột lẻ chứa nhãn và thậm chí chứa đầu vào. Tôi có bốn bảng trên trang của tôi và tất cả các cột của mỗi bảng được căn chỉnh theo chiều dọc. Hy vọng các bước sau sẽ giúp

1- Tải một hình ảnh trong suốt từ bất cứ nơi nào, có lẽ kích thước 1x1 để bạn có thể điều chỉnh kích thước của nó theo nhu cầu của bạn (không chắc chắn nếu một hình ảnh có thể được thu nhỏ quá bởi css)

2- Xác định bảng của bạn như

<table class="formed"> 
      <tr> 
       <th class="colLabel"></th> 
       <th class="colField"></th> 
       <th class="colLabel"></th> 
       <th class="colField"></th> 
      </tr> 
     <tr> 
      <td></td> 
[now rest of your columns row by row] 

3- Xác định css của bạn như

.colLabel 
{ 
    text-align:right; 
    padding-right:0em; 
    height:auto; 
    background-image:url(Resources/Images/transparent.gif); 
    background-repeat:no-repeat; 
    width:8em; 
} 
.colField 
{ 
    text-align:left; 
    padding-right:0em; 
    height:auto; 
    background-image:url(Resources/Images/transparent.gif); 
    background-repeat:no-repeat; 
    width:20em; 
} 

.formed 
{ 
    width:90%; 
    table-layout:fixed; 
    padding:0; 
    margin:0; 
} 
Các vấn đề liên quan