Để sắp xếp và tối ưu hóa quá trình quản lý dữ liệu, các nhà phát triển web có thể sử dụng Table HTML – một phần tử HTML cho phép người dùng thể hiện dữ liệu dưới dạng bảng một cách trực quan và dễ hiểu nhất. Trong bài viết này, Vietnix sẽ cung cấp những thông tin hữu ích về Table HTML và cách tạo bảng nhanh chóng trong HTML, mời bạn cùng tham khảo tại đây.
Giới thiệu Table HTML
Table (bảng) là phần tử HTML cho phép người dùng sắp xếp và trình bày dữ liệu theo dạng hàng và cột tương tự như một bảng tính thông thường. Với cấu trúc này, bạn có thể dễ dàng phân bổ các thành phần vào bảng một cách hợp lý và trực quan nhất với đầy đủ tiêu đề hàng, tiêu đề cột, tiêu đề hợp nhất…
Trong bảng, nội dung và dữ liệu sẽ được bao bọc bởi 2 cặp tag chính gồm:
<table>
và </table>
Ngoài ra, bạn cũng cần đến các tag sau để tạo hàng và tạo cột trong HTML:
<tr></tr>
(tạo hàng)
<td></td>
(tạo cột)
Dưới đây là ví dụ minh họa cho cách áp dụng Table HTML mà bạn có thể tham khảo:
<table>
<tr>
<td>Ô 1</td>
<td>Ô 2</td>
<td>Ô 3</td>
</tr>
<tr>
<td>Ô 4</td>
<td>Ô 5</td>
<td>Ô 6</td>
</tr>
</table>
Lúc này, người dùng khi truy cập vào trang web sẽ nhìn thấy thông tin hiển thị như sau:
Ô 1 | Ô 2 | Ô 3 |
Ô 4 | Ô 5 | Ô 6 |
Danh sách các tag phổ biến của Table HTML
Bên cạnh cặp tag <table>
đã giới thiệu ở trên, bạn cũng cần phải nắm rõ một số tag thường gặp dưới đây để sử dụng trong quá trình lập trình dữ liệu Table với HTML:
<th>
: Xác định heading (tiêu đề) có trong bảng, thường nằm bên trong cặp tag<tr></tr>
.<tr>
: Xác định một row (hàng) trong bảng.<td>
: Được đặt trong cặp tag<tr></tr>
và dùng để xác định 1 ô trong bảng.<caption>
: Thêm chú thích cho bảng.<colgroup>
: Xác định một nhóm trong bảng, có thể là một hoặc nhiều cột khác nhau.<col>
: Xác định thuộc tính cho cột, thường được đặt trong tag<colgroup>
.<thead>
: Thể hiện nội dung cho các heading trong bảng.<tbody>
: Chứa các nội dung chính có trong bảng.<tfoot>
: Thêm nội dung ở footer (chân trang) cho bảng.
Hướng dẫn cách tạo bảng trong HTML đơn giản
Để tạo một bảng đơn giản trong HTML, bạn có thể bắt đầu với các bước cơ bản sau:
Bước 1: Khởi tạo bảng
Đầu tiên, bạn khai báo cặp tag <table></table>
trong file HTML để khởi tạo bảng, sau đó thêm các tag thành phần như <tr>
, <td>
vào trong cặp tag <table>
. Dưới đây là một ví dụ mà bạn có thể tham khảo:
<table>
<td>Ô đầu tiên</td>
<td>Ô thứ hai</td>
<td>Ô thứ hai</td>
<td>Ô thứ tư</td>
</table>
Sau cú pháp trên, bạn đã tạo thành công một bảng với một hàng, và mỗi phần tử <td>
lại tương ứng với một ô. Tất cả các ô đều được căn chỉnh tự động với kích cỡ tương đương nhau:
Ô đầu tiên | Ô thứ hai | Ô thứ ba | Ô thứ tư |
Để thêm 1 – 2 hàng vào bảng đã tạo ở trên, bạn chỉ cần sử dụng phần tử table row <tr>
. Lúc này, mỗi hàng được đặt trong một phần tử <tr>
và mỗi ô lại được chứa trong một <td>
, chẳng hạn như:
<table>
<tr>
<td>Ô đầu tiên</td>
<td>Ô thứ hai</td>
<td>Ô thứ ba</td>
<td>Ô thứ tư</td>
</tr>
<tr>
<td>Hàng thứ hai, ô đầu tiên</td>
<td>Hàng thứ hai, ô thứ 2</td>
<td>Hàng thứ hai, ô thứ 3</td>
<td>Hàng thứ hai, ô thứ 4</td>
</tr>
</table>
Sau cú pháp trên, bạn sẽ nhận được kết quả như sau:
Ô đầu tiên | Ô thứ hai | Ô thứ ba | Ô thứ tư |
Hàng thứ hai, ô đầu tiên | Hàng thứ hai, ô thứ 2 | Hàng thứ hai, ô thứ 3 | Hàng thứ hai, ô thứ 4 |
Bước 2: Thêm tiêu đề (Table Header)
Sau khi khởi tạo bảng thành công, bạn tiếp tục sử dụng Table Header <th>
để chỉ định ô bất kỳ nằm trong <tr>
thành một header và có chức năng tương tự với <td>
. Thông thường, ô heading sẽ được điều chỉnh theo kiểu in đậm, căn giữa để chúng trở nên nổi bật hơn so với các ô còn lại.
<table>
<tr>
<th>Họ</th>
<th>Tên</th>
<th>Số điện thoại</th>
</tr>
<tr>
<td>Trần</td>
<td>Thảo</td>
<td>0334424032</td>
</tr>
<tr>
<td>Lê</td>
<td>Tuấn</td>
<td>0987654321</td>
</tr>
</table>
Họ | Tên | Số điện thoại |
Trần | Thảo | 0334424032 |
Lê | Tuấn | 0987654321 |
Xem thêm: Custom Headers là gì? Hướng dẫn Custom Headers chi tiết, cụ thể trong WordPress.
Bước 3: Thêm thuộc tính head, body, footer
Đối với các bảng có nhiều loại thông tin, cấu trúc chúng thường sẽ phực tạp hơn và bạn cần kết hợp với các thuộc tính khác như <thead>
, <tbody>
và <tfoot>
để phân biệt giữa các thành phần đầu tiên, thành phần cuối và nội dung chính trong bảng.
Tag <thead>
được sử dụng để cố định phần tiêu đề cho các bảng chứa nhiều dữ liệu, từ đó hỗ trợ cho việc phân loại và quản lý thông tin của người dùng. Trong khi đó, <tbody>
cho phép người dùng tạo ra các scroll tách biệt với phần <thead
> và <tfoot>
là nội dung được cố định ở phía cuối bảng để mang đến kết luận cho một vấn đề nào đó.
Dưới đây là cách sử dụng cơ bản cho các thuộc tính này trong Table HTML:
<thead>
: Dùng để gom nhóm tiêu đề cho bảng, thường được đặt ở hàng đầu tiên của bảng. Trong trường hợp người dùng sử dụng thêm thuộc tính<col>
hoặc<colgroup>
,<thead>
sẽ ở ngay phía dưới chúng.<tfoot>
: Dùng để tạo nội dung cố định ở phía cuối của bảng, thường là các cột chứa nội dung tổng kết như tính tổng, thành tiền…<tbody>
: Dùng để bao bọc nội dung chính bên trong bảng, thường được đặt ngay phía dưới nội dung của<thead>
.
Dưới đây là ví dụ minh hoạt về cách sử dụng các thuộc tính <thead>, <tbody> và <tfoot>:
<table>
<thead>
<tr>
<th colspan="2">Công ty A</th>
<th colspan="2">Công ty B</th>
</tr>
</thead>
<tbody>
<tr>
<td>Số lượng nhân viên</td>
<td>Điểm hài lòng</td>
<td>Số lượng nhân viên</td>
<td>Điểm hài lòng</td>
</tr>
<tr>
<td>200</td>
<td>4.3</td>
<td>1000</td>
<td>3.7</td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan= "4">Số liệu được cập nhật lần cuối: 10/06/2024</th>
</tr>
</tfoot>
</table>
Dưới đây là bảng được tạo nên từ cú pháp trên:
Công ty A | Công ty B | ||
Số lượng nhân viên | Điểm hài lòng | Số lượng nhân viên | Điểm hài lòng |
200 | 4.3 | 1000 | 3.7 |
Số liệu được cập nhật lần cuối: 10/06/2024 |
Trong ví dụ trên, phần header (tiêu đề) của bảng chính là danh sách tên công ty, số lượng nhân viên và điểm hài lòng được hiểu là body (phần thân) và footer (chân trang) là câu chú thích thời điểm cập nhật ở cuối bảng.
Bước 4: Thêm Caption
Bằng cách thêm caption, bạn có thể giúp người đọc hiểu được nội dung chính sẽ được trình bày trong bảng. Để làm được điều này, hãy đặt cặp tag <caption>
ở ngay phía sau cặp tag <table>
. Thông thường, caption của bảng sẽ được căn giữa và đặt tại vị trí đầu bảng. Cụ thể là:
<table>
<caption>Thông tin về các tháng trong năm 2024</caption>
<tr>
<th>Tháng</th>
<th>Số ngày</th>
<th>Nhiệt độ trung bình</th>
</tr>
<tr>
<td>1</td>
<td>31</td>
<td>25</td>
</tr>
<tr>
<td>2</td>
<td>29</td>
<td>27</td>
</tr>
<tr>
<td>3</td>
<td>31</td>
<td>28</td>
</tr>
</table>
Cú pháp trên sẽ tạo nên bảng với caption cụ thể là:
Thông tin về các tháng trong năm 2024 | ||
Tháng | Số ngày | Nhiệt độ trung bình |
1 | 31 | 25 |
2 | 29 | 27 |
3 | 31 | 28 |
Bước 5: Thêm thuộc tính phạm vi (Scope Attribute)
Sau khi thêm caption, bạn có thể bổ sung thêm thuộc tính phạm vi Scope để xác định mối quan hệ giữa các ô tiêu đề và ô dữ liệu tương ứng trong một bảng. Thông qua đó, người dùng có thể dễ dàng hiểu được nội dung đang được trình bày, đồng thời hỗ trợ cho các công cụ đọc màn hình và công nghệ hỗ trợ người khuyết tật nhận biết một cách chính xác hơn.
Bên cạnh đó, scope còn có thể chứa một trong 4 thuộc tính khác là col, row, colgroup và rowgroup, mỗi giá trị sẽ xác định phạm vi ổ tiêu đề đối với các cột hoặc hàng tương ứng, chẳng hạn như:
<table>
<tr>
<th></th>
<th scope="col">Tên</th>
<th scope="col">Điểm</th>
</tr>
<tr>
<td>1</td>
<td>Anh</td>
<td>10</td>
</tr>
<tr>
<td>2</td>
<td>Ánh</td>
<td>9.5</td>
</tr>
<tr>
<td>3</td>
<td>Bình</td>
<td>9.5</td>
</tr>
</table>
Sau thao tác trên, chúng ta nhận được bảng như sau:
Tên | Điểm | |
1 | Anh | 10 |
2 | Ánh | 9.5 |
3 | Bình | 9.5 |
Bước 6: Sử dụng hợp nhất ô (Cell Spanning)
Đôi khi, để bảng trở nên trực quan và gọn gàng hơn, bạn cần phải hợp nhất một số dòng hoặc cột nhất định. Nếu như với các phần mềm quen thuộc như Excel hay MS Word, bạn chỉ cần hợp nhất các ô liên quan bằng tính năng merge, thì trong HTML, cũng có một số thuộc tính hỗ trợ bạn thực hiện điều này là <colspan>
và <rowspan
>.
<colspan>
cho phép hợp nhất các ô theo hàng, còn <rowspan>
được dùng để hợp nhất ô theo cột. Giá trị của chúng luôn lớn hơn 0 và bằng với số lượng ô mà bạn cần hợp nhất. Chẳng hạn như trong ví dụ dưới đây, chúng ta cần hợp nhất 3 ô theo chiều dọc và 2 ô theo chiều ngang. Lúc này, hãy sử dụng 2 thuộc tính <colspan>
, <rowspan>
với cú pháp sau:
<table>
<tr>
<th>Tên</th>
<th>Môn</th>
<th>Điểm</th>
</tr>
<tr>
<td rowspan = "2">Nam</td>
<td>Nhập môn HTML</td>
<td>75</td>
</tr>
<tr>
<td>Nhập môn JavaScript</td>
<td>60</td>
</tr>
<tr>
<td rowspan = "2">Tâm</td>
<td>Nhập môn HTML</td>
<td>80</td>
</tr>
<tr>
<td>Nhập môn JavaScript</td>
<td>75</td>
</tr>
<tr>
<td colspan="3">Trung bình: 72.5</td>
</tr>
</table>
Lưu ý: Khi sử dụng hai thuộc tính trên, bạn cần check lại giá trị gán vào cú pháp một cách kỹ lưỡng để đảm bảo chúng không bị chồng chéo nhau.
Sau cú pháp trên, ta có bảng như sau:
Tên | Môn | Điểm |
Nam | Nhập môn HTML | 75 |
Nhập môn JavaScript | 60 | |
Tâm | Nhập môn HTML | 80 |
Nhập môn JavaScript | 75 | |
Trung bình: 72.5 |
Hướng dẫn cách định dạng bảng trong HTML
Để định dạng bảng trong HTML, bạn tham khảo hướng dẫn sau:
Sử dụng <col> và <colgroup>
Trong Table HTML, bạn có thể sử dụng thuộc tính <col>
và <colgroup
> để highlight và làm nổi bật các thông tin quan trọng, hay chỉ đơn giản là khiến cho bảng trở nên đẹp mắt hơn khi hiển thị trên trang web. Trong đó <col>
sẽ được đặt bên trong tag <colgroup>
, còn <colgroup>
nằm ở vị trí liền kề <table>
. Cụ thể là:
<table>
<colgroup>
<col />
<col style="background-color: yellow" />
</colgroup>
<tr>
<th>Tên</th>
<th>Tuổi</th>
</tr>
<tr>
<td>Thanh</td>
<td>33</td>
</tr>
<tr>
<td>Lâm</td>
<td>25</td>
</tr>
</table>
Với cấu trúc trên, bạn có thể áp dụng cho các trường hợp cần làm nổi bật các cột chứa thông tin quan trọng. Trong đó, tag <col>
cho phép bạn định dạng cho tất cả các ô của cột, thay vì phải thực hiện trên từng cột riêng lẻ.
Ngoài ra, bạn cũng có thể highlight cho cả 2 cột bằng cách chèn thêm thuộc tính span vào trong <col>
với giá trị là số lượng cột chính xác mà bạn muốn highlight. Chi tiết có thể tham khảo qua ví dụ sau:
<colgroup>
<col style="background-color: yellow" span="2" />
</colgroup>
Cần lưu ý là các thuộc tính <colspan>
, <rowspan>
và span trong Table HTML đều chỉ nhận giá trị là một số thay vì văn bản hay một đơn vị bất kỳ.
Định dạng border
Để bảng trở nên bắt mắt hơn, bạn có thể tạo đường viền với thuộc tính border. Thuộc tính này sẽ được chèn vào trong các tag <table>
, <th>
và <td>
. Thông qua thuộc tính này, bạn có thể tạo một số kiểu định dạng bảng như:
- Border-collapse: Thu gọn thành một đường viền đơn.
- Border-radius: Bo tròn đường viền.
- Border-color: Đổi màu sắc đường viền.
- Border-style: Thay đổi định dạng cho kiểu đường viền, chẳng hạn như dashed, groove, none, dotted, solid, double, ridge, hidden,…
Dưới đây là một ví dụ mà bạn có thể tham khảo:
<style>
th, td {
border-style:solid;
border-radius: 10px;
border-color: #96D4D4;
}
</style>
Sau cú pháp trên, bạn sẽ nhận được kết quả hiển thị trên web như sau:
Định dạng Cellpadding & Cellspacing
Thông qua thuộc tính Cellpadding, bạn có thể xác định khoảng cách giữa các nội dung trong một ô của bảng và đường viền của ô đó với đơn vị đo lường là pixels. Trong trường hợp bạn muốn tạo khoảng cách giữa các ô, hãy tham khảo các thuộc tính liên quan như: padding-bottom, padding-top, padding-left, padding-right
Dưới đây là một ví dụ điển hình:
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding-top: 10px;
padding-bottom: 20px;
padding-left: 30px;
padding-right: 40px;
}
Sau đó, bảng sẽ hiển thị trên trang web dưới dạng như sau:
Không chỉ thế, Cellspacing còn cho phép người dùng chỉ định khoảng cách giữa các ô với giá trị mặc định tương tự là pixels. Để thay đổi thông số này, bạn sẽ cần đến thuộc tính border-spacing, cụ thể là:
table, th, td {
border: 1px solid black;
}
table {
border-spacing: 30px;
}
Kết quả bạn nhận được sẽ như thế này:
Định dạng Width và Height
Trong Table HTML, Width và Height là 2 thuộc tính quen thuộc được sử dụng để xác định chiều cao và chiều rộng chính xác của bảng với giá trị được xác định theo pixel hoặc phần trăm, cụ thể là:
<!DOCTYPE html>
<html>
<body>
<p>- Bảng bên dưới có chiều rộng bằng 100% chiều rộng phần nội của phần tử body</p>
<table border="1" width="100%">
<tr>
<th>Họ và tên</th>
<th>Năm sinh</th>
<th>Giới tính</th>
<th>Quê quán</th>
</tr>
<tr>
<td>Nguyễn Thành A</td>
<td>1993</td>
<td>Nam</td>
<td>Cần Thơ</td>
</tr>
<tr>
<td>Trần Văn B</td>
<td>1985</td>
<td>Nam</td>
<td>Vĩnh Long</td>
</tr>
<tr>
<td>Lê Thị C</td>
<td>1990</td>
<td>Nữ</td>
<td>Sóc Trăng</td>
</tr>
</table>
<p>- Bảng bên dưới có chiều rộng bằng 500 pixel</p>
<table border="1" width="500px">
<tr>
<th>Họ và tên</th>
<th>Năm sinh</th>
<th>Giới tính</th>
<th>Quê quán</th>
</tr>
<tr>
<td>Nguyễn Thành A</td>
<td>1993</td>
<td>Nam</td>
<td>Cần Thơ</td>
</tr>
<tr>
<td>Trần Văn B</td>
<td>1985</td>
<td>Nam</td>
<td>Vĩnh Long</td>
</tr>
<tr>
<td>Lê Thị C</td>
<td>1990</td>
<td>Nữ</td>
<td>Sóc Trăng</td>
</tr>
</table>
</body>
</html>
Dưới đây là kết quả bạn sẽ nhận được sau khi thực hiện cú pháp trên:
Một số trick hay khi dùng bảng trong HTML
Để tối ưu hóa quá trình tạo bảng với HTML mà vẫn đảm bảo nội dung bên trong được hiển thị một cách trực quan, dễ hiểu và đẹp mắt nhất, bạn có thể tham khảo một số trick hay hữu ích trong nội dung dưới đây:
Nesting Tables: Được hiểu là việc đặt 1 bảng bên trong một bảng khác. Mặc dù phương pháp này khá phức tạp về markup, nhưng đôi khi chúng sẽ hữu dụng trong việc sắp xếp và trình bày nội dung của bảng một cách khoa học, logic nhất.
Zebra Striping Tables: Đây là dạng table sọc, thường bao gồm các sọc ghi và sọc trắng xen kẽ nhau. Để tạo bảng tương tự, bạn chỉ cần chỉnh sửa đôi chút trong CSS với cú pháp sau:
tbody tr:nth-child(odd) {background: #f4f4f4; }
Căn chỉnh Table ra giữa: Tương tự, để căn chỉnh bảng ra giữa, bạn chỉ cần sử dụng CSS:
margin: auto;
Hoặc sử dụng Flexbox:
display: flex;
justify-content: center;
align-items: center;
Khi nào nên và không nên sử dụng table HTML
Table HTML sẽ hữu ích trong trường hợp bạn muốn đưa nhiều thông tin vào trong một bảng để chúng hiển thị một cách trực quan, dễ hiểu và đẹp mắt nhất trên trang web. Tuy nhiên, bạn không thể sử dụng Table HTML để làm layout. Thay vào đó, hãy tìm hiểu các phương pháp khác hiệu quả và thông dụng hơn như Flexbox, CSS Grid…
Lời kết
Đó là các bước tạo Table HTML chi tiết mà bạn có thể tham khảo. Nhìn chung, Table HTML sẽ rất hữu ích trong việc truyền tải thông tin một cách trực quan, nhưng hãy cân nhắc khi sử dụng để đạt được hiệu quả cao nhất. Ngoài ra, đừng quên chia sẻ bài viết để mọi người cùng đón đọc, bạn nhé!