2012-02-13 37 views
5

Tôi có một bảng theo bên dưới. Hàng thứ hai đã xác định ba cột, một cột có colspan=8 và các cột khác có colspan=1. Tuy nhiên, các tế bào không được kéo dài theo colspan, "chiều rộng" là nhiều hơn một chút cho tế bào thứ hai và rộng nhất cho thứ ba.Tại sao colspan không được áp dụng như mong đợi

<table class="floating simpletable"> 
    <tbody> 
     <tr><td colspan="10">1st row</td></tr> 
     <tr><td colspan="8">Column 1 -&gt; Least wide</td><td colspan="1">2nd</td><td colspan="1">3rd</td></tr> 
     <tr><td colspan="10">3rd row</td></tr> 
     <tr><td colspan="1">1st cell</td><td colspan="9">4th row</td></tr> 
    </tbody> 
</table> 

Sự cố và cách khắc phục sự cố?

+0

Hàng có chứa 10 ô ở đâu? – ZippyV

+0

Đó là hàng đầu tiên. Tôi có phải định nghĩa hàng với 10 ô theo một cách nào đó không? – Nicsoft

+1

-1 cho cái gì? xin vui lòng bình luận! – Nicsoft

Trả lời

5

Độ rộng của ô phụ thuộc vào nội dung ô, cài đặt HTML và CSS cho chiều rộng, trình duyệt và có thể là giai đoạn của mặt trăng. Thuộc tính colspan chỉ định số cột (do đó, số lượng vị trí trong lưới cho bảng) mà một ô chiếm giữ.

Nếu bạn thấy ô cuối cùng của hàng 2 là rộng nhất, thì lý do có thể là hầu hết nội dung (hoặc có cài đặt chiều rộng cho nó). Mã trình diễn của bạn không thể hiện hành vi như vậy.

Nếu bạn không muốn độ rộng cột điều chỉnh theo yêu cầu kích thước của ô, hãy đặt độ rộng một cách rõ ràng bằng CSS (hoặc trong HTML). Trước đó, tốt nhất là loại bỏ tất cả các biến chứng không cần thiết khỏi cấu trúc bảng. Nếu mã demo của bạn phản ánh toàn bộ cấu trúc, thì các cột từ 2 đến 8 là một bộ phận không cần thiết, tức là chúng có thể được chuyển sang một cột đơn. Cuộc biểu tình (với độ rộng điểm ảnh kém phong cách chỉ cho tính xác định):

<table class="floating simpletable" border> 
    <col width=100><col width=100><col width=100> 
    <tbody> 
     <tr><td colspan="4">1st row</td></tr> 
     <tr><td colspan="2">span 1</td><td>span 2</td><td>span 3 </td></tr> 
     <tr><td colspan="4">3rd row</td></tr> 
     <tr><td>span</td><td colspan="3">other span</td></tr> 
    </tbody> 
</table> 

Nếu không có một viết lại như thế này, tôi e rằng bảng của bạn vi phạm các mô hình bảng HTML, như hiện nay không có tế bào bắt đầu trong cột 3 hoặc cột 4 hoặc ...

+0

Ví dụ của tôi là ví dụ thực tế không hoạt động. Nhưng đề xuất của bạn thêm một thẻ cho mỗi cột đã giải quyết được đề xuất đó. Tôi đã thêm mười trong số đó và đặt chiều rộng = 10% cho mỗi cái. Cảm ơn! Nhưng trong ví dụ của bạn, bạn chỉ thêm ba , không phải là bốn trong số chúng vì bạn sử dụng colspan = 4? – Nicsoft

+0

Trong bản demo của tôi, cột cuối cùng chỉ cần những gì nó cần. Để đạt được những gì tôi nghĩ rằng bạn đang hướng tới, bạn có thể sử dụng (khi sử dụng đánh dấu của tôi) ''. Cách tiếp cận của bạn của mười cột mỗi 10% rộng có lẽ không mạnh mẽ, vì nó không khắc phục vấn đề mô hình bảng. –

+0

Ok, tôi hiểu tại sao bạn rời khỏi col cuối cùng. Nhưng đọc về mô hình bảng, khách hàng nên sử dụng để quyết định số lượng cột, vì vậy tôi đoán nó không sai khi có một cho mỗi cột. Bạn có thể vui lòng giải thích lý do tại sao con đường của tôi không phải là mạnh mẽ như cách của bạn? Có lẽ tôi thiếu hiểu biết về mô hình bảng ... – Nicsoft

1

colspan xác định số lượng ô trùng lặp, không phải kích thước của các cột đó. Sử dụng thuộc tính CSS width để chỉ định chiều rộng của sự vật.

+0

Nó thực sự là không có các tế bào tôi có nghĩa là, chỉ cần nói của tôi mà có lẽ là một chút không rõ ràng. Tôi sẽ sửa chữa nó. – Nicsoft

Các vấn đề liên quan