colspan: một ô trải qua nhiều cột
colspan="n" làm một ô rộng bằng n cột. Khi đó hàng chứa nó có ít hơn n - 1 ô. Ở đây ô tổng trải qua hai cột đầu:
Hàng cuối có hai ô, nhưng ô đầu được tính là hai, nên hàng này vẫn đủ ba cột như các hàng khác.
rowspan: một ô trải xuống nhiều hàng
rowspan="n" làm một ô cao bằng n hàng. Các hàng bên dưới bỏ cột đó, vì ô cao đã lấp nó:
Hàng của Bob và Cy chỉ có một <td>: cột Team đã bị "Design" chiếm. Không có gì đánh dấu điều này trong HTML, nên hãy đọc bảng có rowspan từ trên xuống dưới và nhớ những cột nào vẫn đang bị phủ.
colspan và rowspan cùng lúc: thời khóa biểu
Một ô có thể trải theo cả hai chiều. Thời khóa biểu là ví dụ kinh điển, với một số lớp kéo dài hai tiết và một số lớp diễn ra suốt hai ngày:
Đếm hàng 10:00: ô tiêu đề giờ, rồi cột Mon bị HTML từ hàng trên phủ, rồi Lab lấp Tue và Wed. Ở hàng 11:00, cột Mon đã trống trở lại còn Lab vẫn phủ Tue và Wed, nên hàng này có một ô dữ liệu.
Đếm ô để bảng luôn vuông vức
Mọi hàng phải có tổng số cột bằng nhau, tính cả colspan của từng ô và các cột bị ô rowspan từ trên phủ xuống. Khi một hàng thừa một ô, trình duyệt thêm một cột mới cho nó và bảng bị lởm chởm ở mép:
Trong bảng sai, hàng thứ hai quên rằng A đã phủ cột đầu của nó, nên D rơi vào cột thứ ba mà không hàng nào khác có. Cách sửa là xóa một ô. Cùng lỗi đó với colspan là giữ nguyên mọi ô ban đầu trong hàng có ô rộng.
Thiếu một ô là vấn đề ngược lại: hàng kết thúc sớm và để lại một lỗ trống ở cuối.
Tiêu đề nhóm với colspan
Một ô tiêu đề có thể trải qua các cột mà nó gắn nhãn, phía trên một hàng tiêu đề chi tiết hơn. Đánh dấu nó bằng scope="colgroup" để trình đọc màn hình áp dụng nó cho mọi cột bên dưới:
"City" trải qua cả hai hàng tiêu đề nhờ rowspan="2", và mỗi tháng trải qua hai cột của nó nhờ colspan="2". Các phần tử <colgroup> xác định nhóm cột mà scope="colgroup" tham chiếu tới. Khi đó trình đọc màn hình ở ô 31 của Rome có thể đọc "Rome, July, High, 31". Phần còn lại của cấu trúc bảng có ở trang bảng HTML.
Chỉ gộp ô khi cấu trúc thật sự cần
Ô gộp làm bảng khó đọc hơn với trình đọc màn hình và khó sắp xếp, lọc hay sao chép sang bảng tính hơn. Hãy dùng chúng khi dữ liệu thật sự được nhóm lại (một ô tổng, một tiêu đề phía trên các cột con, một lớp học kéo dài hai giờ). Nếu một bảng cần quá nhiều ô gộp, hai bảng đơn giản hơn thường rõ ràng hơn.
Lỗi thường gặp
- Để lại các ô đã bị phủ. Ô
colspan="2"thay cho hai ô; hãy xóa một trong các ô ban đầu. - Quên các hàng bên dưới
rowspan. Mỗi hàng đó cần ít hơn một ô. - Viết
colspantrên<tr>. Nó chỉ hoạt động trên<td>và<th>. - Gộp ô để dàn trang, như một hàng banner trải ngang trong bảng dùng làm bố cục trang. Hãy dùng CSS grid để dàn trang.
colspan="100%"với ý "toàn bộ chiều rộng". Trình duyệt chỉ đọc các chữ số ở đầu, nên ô này trải qua 100 cột và thêm các cột trống vào bảng. Giá trị là một số nguyên các cột.
Câu hỏi thường gặp
colspan có tác dụng gì trong HTML?
colspan làm một ô <td> hoặc <th> trải rộng qua nhiều cột: <td colspan="3"> chiếm chỗ của ba ô trong hàng. Khi đó hàng này cần ít hơn các hàng khác hai ô.
rowspan có tác dụng gì trong HTML?
rowspan làm một ô trải dài xuống nhiều hàng: <td rowspan="2"> lấp hàng của nó và hàng bên dưới. Hàng tiếp theo phải bỏ cột đó, vì ô phía trên đã phủ nó.
Một ô có thể dùng cả colspan và rowspan không?
Có. <td colspan="2" rowspan="2"> phủ một khối hai cột nhân hai hàng. Mỗi hàng mà nó đi qua cần ít hơn hai ô của riêng hàng đó.
Tại sao bảng của tôi có một ô thừa lồi ra?
Một hàng có nhiều ô hơn các hàng khác khi đã tính các ô gộp. Thường thì một hàng bên dưới rowspan vẫn ghi một ô cho cột đã bị phủ, hoặc một hàng có colspan vẫn giữ đủ các ô ban đầu. Hãy xóa thẻ <td> thừa.
Giá trị tối đa của colspan là bao nhiêu?
Trình duyệt giới hạn colspan ở 1000 và rowspan ở 65534. Với colspan, giá trị 0 hoặc giá trị không bắt đầu bằng chữ số được coi là 1.