3.1. Tạo bảng dữ liệu (HTML Tables)
Bảng biểu dùng để hiển thị dữ liệu dạng lưới (danh sách học sinh, hóa đơn), không dùng để chia bố cục trang web.
3.1.1. Cấu trúc bảng cơ bản
Cú pháp:
HTML<table border="1"> <tr> <th>Họ tên</th> <th>Điểm</th> </tr> <tr> <td>Nguyễn Văn A</td> <td>10</td> </tr> </table>Giải thích chức năng:
<table>: Khai báo khu vực bảng.<tr>(Table Row): Tạo ra một dòng. Muốn bảng có bao nhiêu dòng thì dùng bấy nhiêu thẻtr.<th>(Table Header): Dùng cho dòng đầu tiên. Trình duyệt sẽ tự động in đậm và căn giữa chữ để người xem biết đây là tiêu đề cột.<td>(Table Data): Chứa nội dung dữ liệu thực tế.
3.1.2. Kỹ thuật gộp ô (Merge Cells)
Gộp cột (
colspan): Làm cho một ô “dài ra” theo chiều ngang, chiếm chỗ của các ô bên cạnh.Ví dụ:
colspan="2"(Ô này chiếm 2 cột). Thường dùng cho tiêu đề lớn bao trùm nhiều cột con.
Gộp dòng (
rowspan): Làm cho một ô “cao lên” theo chiều dọc, chiếm chỗ của các dòng bên dưới.Ví dụ:
rowspan="2"(Ô này chiếm 2 dòng). Thường dùng cho cột số thứ tự hoặc các mục chung.
Ví dụ thực tế (Thời khóa biểu):
HTML<table border="1"> <tr> <th colspan="2">Lịch Học</th> </tr> <tr> <td rowspan="2">Thứ 2</td> <td>Sáng: Toán</td> </tr> <tr> <td>Chiều: Lý</td> </tr> </table>
3.2. Thẻ khối và Thẻ nội dòng (Block vs Inline) Hiểu rõ hai loại thẻ này giúp kiểm soát vị trí hiển thị trên trang web.
3.2.1. Thẻ khối (Block-level elements): Thẻ <div>
Khái niệm: Là các thẻ luôn bắt đầu trên một dòng mới và chiếm toàn bộ chiều rộng có sẵn (từ mép trái sang mép phải màn hình).
Đại diện:
<div>,<h1>–<h6>,<p>,<ul>.Chức năng của
<div>(Division): Dùng để gom nhóm các phần tử HTML thành một khu vực (một khối) để dễ dàng đóng khung, tô màu nền hoặc di chuyển.Ví dụ:
HTML<div style="background-color: blue; color: white;"> <h2>Khu vực Menu</h2> <p>Đây là một khối riêng biệt.</p> </div>
3.2.2. Thẻ nội dòng (Inline elements): Thẻ <span>
Khái niệm: Là các thẻ chỉ chiếm chiều rộng vừa đủ với nội dung của nó và không xuống dòng mới.
Đại diện:
<span>,<a>,<b>,<img>.Chức năng của
<span>: Dùng để tác động vào một phần nhỏ văn bản nằm trong một dòng (ví dụ: tô màu một chữ, làm đậm một từ).Ví dụ:
HTML<p>Hàng này đang <span style="color: red;">GIẢM GIÁ 50%</span> hôm nay.</p>
3.3. Mô hình hộp (CSS Box Model)
Đây là kiến thức quan trọng nhất để căn chỉnh giao diện (Layout) thay thế cho công nghệ Frame cũ. Mọi thẻ HTML (div, p, img…) đều được coi là một cái hộp chữ nhật.
3.3.1. Các thành phần của Box Model Một cái hộp gồm 4 lớp (từ trong ra ngoài):
Content (Nội dung): Là văn bản hoặc hình ảnh bên trong cùng.
Padding (Vùng đệm): Khoảng cách từ Nội dung đến Đường viền. Giúp nội dung “dễ thở”, không bị dính sát vào viền.
Border (Đường viền): Đường bao quanh hộp.
Margin (Lề ngoài): Khoảng cách từ Đường viền của hộp này đến các hộp khác xung quanh (để đẩy chúng ra xa).
3.3.2. Minh họa bằng Code
Ví dụ: Tạo một nút bấm (Button) đẹp mắt.
HTML<style> .nut-bam { background-color: orange; /* Màu nền hộp */ color: white; /* Màu chữ (Content) */ padding: 10px 20px; /* Đệm: Trên dưới 10px, Trái phải 20px */ border: 2px solid red; /* Viền: Dày 2px, nét liền, màu đỏ */ margin: 50px; /* Cách xa các nút khác 50px */ } </style> <button class="nut-bam">MUA NGAY</button>Giải thích: Nếu không có
padding, chữ “MUA NGAY” sẽ dính chặt vào viền đỏ rất xấu. Nếu không cómargin, các nút sẽ dính liền vào nhau.
Bài tập 3.1: Thiết kế Thời khóa biểu (Sử dụng Table)
Mục tiêu: Thành thạo
colspanvàrowspan.Yêu cầu: Tạo bảng TKB gồm các cột: Thứ, Buổi, Tiết, Môn học.
Gộp cột tiêu đề lớn “THỜI KHÓA BIỂU HỌC KỲ 1”.
Gộp dòng cột “Thứ” (Thứ 2 có Sáng/Chiều).
Gộp dòng cột “Buổi” (Sáng có 5 tiết).
Gợi ý: Vẽ bảng ra giấy trước để xác định ô nào cần gộp.
Bài tập 3.2: Dựng khung giao diện web (Sử dụng Div & Box Model)
Mục tiêu: Tạo bố cục trang web cơ bản thay thế Frameset.
Yêu cầu: Tạo file
layout.htmlcó 3 khối nằm dọc:Header: Cao 100px, nền màu xanh dương, chữ trắng, căn giữa.
Main Content: Cao 400px, nền màu xám nhạt, có
padding20px để văn bản không sát lề. Cómargin10px để tách biệt với Header.Footer: Cao 50px, nền màu đen, chữ trắng.
Mã lệnh gợi ý:
HTML<div id="header" style="height: 100px; background: blue;">HEADER</div> <div id="main" style="height: 400px; background: #eee; margin-top: 10px; padding: 20px;"> NỘI DUNG CHÍNH </div> <div id="footer" style="height: 50px; background: black; margin-top: 10px;">FOOTER</div>
4. Câu hỏi ôn tập
Câu hỏi: Để gộp 3 ô trên cùng một dòng thành 1 ô, ta dùng thuộc tính nào?
Trả lời: Dùng
colspan="3".
Câu hỏi: Phân biệt
PaddingvàMargin?Trả lời:
Paddinglà khoảng cách bên trong (từ nội dung ra viền).Marginlà khoảng cách bên ngoài (từ viền ra các đối tượng khác).
Câu hỏi: Thẻ
<div>và thẻ<span>khác nhau cơ bản ở điểm nào về mặt hiển thị?Trả lời: Thẻ
<div>là thẻ khối (tự động xuống dòng, chiếm hết chiều ngang). Thẻ<span>là thẻ nội dòng (nằm chung dòng với văn bản, kích thước chỉ bằng nội dung chứa trong nó).
Câu hỏi: Tại sao trong thiết kế hiện đại, người ta ít dùng Table để chia bố cục trang web?
Trả lời: Vì Table có cấu trúc code phức tạp, khó chỉnh sửa và khó hiển thị tốt trên các thiết bị di động (không Responsive tốt bằng
div).
