--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

HTML (18) - Thêm ngữ nghĩa cho bảng

Bài trước: HTML (17) - Bảng

-----

15.3  Thêm ngữ nghĩa cho bảng

Thêm tiêu đề cho bảng

Sử dụng phần tử caption để thêm tiêu đề cho bảng (đừng nhầm tiêu đề của bảng và tiêu đề của cột dữ liệu). Phần tử caption phải nằm ngay sau thẻ <table>, mỗi bảng chỉ cho phép có một phần tử caption. Mặc dù chúng ta có thể sử dụng phần tử <h2> hoặc <p> để tạo ra mô tả cho bảng, tuy nhiên, nên dùng các phần tử chuẩn để đảm bảo ngữ nghĩa cho nội dung, vì thực tế không phải chỉ có người dùng đọc nội dung trang web, mà còn có rất nhiều các hệ xử lý tự động khác.

Mặc định, tiêu đề sẽ được đặt ở trên đầu bảng, tuy nhiên, có thể thay đổi vị trí hiển thị của nó ở cuối bảng bằng CSS.

Ví dụ,

[HTML]

…

<table border="1">

                                    <caption>Bảng điểm sinh viên</caption>

                                    <tr>

                                                <th>Mã SV</th>

                                                <th>Họ Tên</th>

                                                <th>Điểm</th>

                                                <th>Lớp</th>

                                    </tr>

…

</table>

Nếu muốn thêm mô tả gồm nhiều nội dung cho bảng thì sử dụng phần tử figure và phần tử figcaption.

Thuộc tính scope trong thẻ <th>

Thuộc tính scope dùng để khai báo tường minh phạm vi ảnh hưởng của ô tiêu đề (<th>), giúp trình duyệt, công cụ tìm kiếm và các thiết bị hỗ trợ (như phần mềm đọc màn hình) hiểu chính xác cấu trúc dữ liệu của bảng.

Các giá trị phổ biến của scope:

- col: Tiêu đề áp dụng cho cả cột chứa nó

- row: Tiêu đề áp dụng cho cả hàng chứa nó

- colgroup: Tiêu đề áp dụng cho cả nhóm cột (dùng kết hợp với thẻ <colgroup>)

- rowgroup: Tiêu đề áp dụng cho cả nhóm hàng (dùng kết hợp với <thead>, <tbody>, hoặc <tfoot>)

Ví dụ 1: Sử dụng scope = “col” (tiêu đề cột): Dùng khi các ô tiêu đề nằm ở hàng ngang đầu tiên của bảng, đại diện cho toàn bộ các ô dữ liệu phía bên dưới.

[HTML]

<table>

  <tr>

    <th scope="col">Mã SV</th>

    <th scope="col">Họ Tên</th>

    <th scope="col">Điểm</th>

    <th scope="col">Lớp</th>

  </tr>

  <tr>

    <td>SV001</td>

    <td>Nguyễn Văn Tèo</td>

    <td>8.5</td>

    <td>HTML 1</td>

  </tr>

</table>

Ví dụ 2: sử dụng scope=“row” (tiêu đề hàng): Dùng khi ô tiêu đề nằm ở cột đầu tiên bên trái, đại diện cho toàn bộ các ô dữ liệu nằm ngang trong cùng hàng đó.

[HTML]

<table>

  <tr>

    <th scope="row">Môn Toán</th>

    <td>8.0</td>

    <td>9.0</td>

  </tr>

  <tr>

    <th scope="row">Môn Văn</th>

    <td>7.5</td>

    <td>8.5</td>

  </tr>

</table>

Tổ chức bảng theo cấu trúc header, body và footer

HTML cho phép tạo ra cấu trúc bảng gồm ba phần, gồm: phần đầu (header), phần thân (body) và phần chân (footer), giữa chúng có mối liên kết ngầm với nhau.

Với cấu trúc ba phần này, nếu bảng có nhiều hàng dữ liệu, trình duyệt sẽ tự động hiển thị thanh cuộn cho riêng phần thân bảng, hoặc khi in trên nhiều trang, phần đầu và phần chân sẽ được tự động chèn vào mỗi trang in.

- Phần đầu được tạo ra bằng phần tử thead, viết tắt của table header

- Phần thân được tạo ra bằng phần tử tbody, viết tắt của table body

- Phần chân được tạo ra bằng phần tử tfoot, viết tắt của table footer

Ví dụ một bảng có cấu trúc ba phần,

[HTML]

<!DOCTYPE html>

<html>

     <head>

          <title>Hoc lam web</title>

          <meta charset="utf-8">

     </head>

     <body>

          <table border="1">

               <caption>Bảng điểm sinh viên</caption>

               <thead>

                    <tr>

                         <th>Mã SV</th>

                         <th>Họ</th>

                         <th>Tên</th>

                         <th>Điểm</th>

                         <th>Lớp</th>

                    </tr>

               </thead>

               <tbody>

                    <tr>

                         <td>00112233</td>

                         <td>Nguyễn Văn</td>

                         <td>Tèo</td>

                         <td>7</td>

                         <td>CNTT1</td>

                    </tr>

                    <tr>

                         <td>00112244</td>

                         <td>Trần Văn</td>

                         <td>Tít</td>

                         <td>8</td>

                         <td>CNTT1</td>

                    </tr>

                    <tr>

                         <td>00112255</td>

                         <td>Lê Văn</td>

                         <td>Mít</td>

                         <td>9</td>

                         <td>CNTT2</td>

                    </tr>

               </tbody>

               <tfoot>

                    <tr>

                         <td colspan="5">Đây là bảng điểm chính thức của môn học</td>

                    </tr>

               </tfoot>

          </table>

     </body>

</html>

 

[Kết quả]

Bảng điểm sinh viên

Mã SV

Họ

Tên

Điểm

Lớp

00112233

Nguyễn Văn

Tèo

7

CNTT1

00112244

Trần Văn

Tít

8

CNTT1

00112255

Lê Văn

Mít

9

CNTT2

Đây là bảng điểm chính thức của môn học

Bảng lồng nhau

Chúng ta có thể tạo ra một bảng nằm bên trong một ô bất kỳ của bảng khác, nghĩa là cho phép bảng lồng trong bảng.

Thực tế, có thể chèn hầu hết các loại phần tử vào trong một ô của bảng, nghĩa là chèn vào trong phần tử td, hoặc th.

Ví dụ, bảng lồng trong bảng,

[HTML]

                        <table border="1">

                                    <tr>

                                                <td>1</td>

                                                <td>

                                                            <table border="1"

                                                                        <tr>

                                                                                    <td>A</td>

                                                                                    <td>B</td>

                                                                        </tr>

                                                                        <tr>

                                                                                    <td>C</td>

                                                                                    <td>D</td>

                                                                        </tr>

                                                           

                                                            </table>

                                                </td>

                                    </tr>

                                    <tr>

                                                <td>3</td>

                                                <td>4</td>

                                    </tr>

                        </table>

[Kết quả]

1

A

B

C

D

3

4

15.4 Xem và đọc thêm

Dùng các từ khóa sau, tìm trong chatbot, google, youtube để tìm hiểu thêm: phần tử table, gộp ô, thêm ngữ nghĩa cho bảng.

15.5  Bài tập và câu hỏi

Bài tập

Bài tập 15.1: Viết lại các đoạn mã trong phần lý thuyết.

Bài tập 15.2: Sử dụng HTML hiển thị bảng giá chứng khoán sau. Chưa cần thể hiện màu sắc của chữ. Tiêu đề của bảng là “Bảng giá chứng khoán”.

Bảng giá chứng khoán.



[Hướng dẫn làm bài tập]

Bài tập 15.2:

[chungKhoan.html]

<!DOCTYPE html>

<html lang="en">

<head>

</head>

<body>

    <table border="1">

        <caption>Bảng giá chứng khoán</caption>

        <thead>

            <tr>

                <th rowspan="2">CK</th>

                <th rowspan="2">Trần</th>

                <th rowspan="2">Sàn</th>

                <th rowspan="2">TC</th>

                <th colspan="6">Bên mua</th>

            </tr>

            <tr>

                <th>Giá 3</th>

                <th>KL 3</th>

                <th>Giá 2</th>

                <th>KL 2</th>

                <th>Giá 1</th>

                <th>KL 1</th>

            </tr>

        </thead>

        <tbody>

            <tr>

                <td>AAA</td>

                ...

            </tr>

        </tbody>

    </table>

</body>

</html>

Câu hỏi

Câu 15a: How do you create a header cell?

A. Using <tr> tag

B. Using <thead> tag

C. Using <th> tag

D. Using <td> tag

Câu 15b: The _____ tag defines a standard data cell in an HTML table

A. <tr>

B. <th>

C. <dc>

D. <td>

Câu 15c: The colspan _____ defines the number of columns a cell should span

A. attribute

B. tag

C. element

D. document

Câu 15d: The ____ tag is used to group header content in an HTML table.

A. <th>

B. <tr>

C. <td>

D. <thead>

-----