Mục lục (5 phần)
HTML và CSS là chủ đề nặng điểm nhất của lớp 12: phần I thường có 5–7 câu, phần II hay có một câu đúng/sai cho cả một trang web. Phần lớn câu hỏi yêu cầu đọc đoạn mã và đoán kết quả hiển thị, nên em cần nhớ chính xác thẻ, thuộc tính và quy tắc ưu tiên của CSS.
Kiến thức trọng tâm
Cấu trúc một trang HTML
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>CLB Tin học</title>
<link rel="stylesheet" href="giao-dien.css">
</head>
<body>
<h1>Câu lạc bộ Tin học</h1>
<p>Sinh hoạt <b>thứ Năm</b> hằng tuần.</p>
<img src="anh/logo.png" alt="Biểu tượng CLB" width="120">
<a href="lich.html">Xem lịch sinh hoạt</a>
</body>
</html><head>chứa thông tin về trang (tiêu đề trên thẻ tab, bảng mã, liên kết tệp CSS);<body>chứa mọi nội dung hiển thị.- Phần tử = thẻ mở + nội dung + thẻ đóng. Thẻ rỗng không có thẻ đóng:
<img>,<br>,<hr>,<input>,<meta>,<link>. - Thuộc tính viết trong thẻ mở dạng
ten="giá trị". Thẻ lồng nhau phải mở sau, đóng trước:<b><i>…</i></b>.
Thẻ HTML thông dụng
| Thẻ | Công dụng | Thuộc tính hay hỏi |
|---|---|---|
<h1>…<h6> |
Tiêu đề mục, h1 lớn nhất |
|
<p>, <br>, <hr> |
Đoạn văn, xuống dòng, đường kẻ ngang | |
<b> / <strong>, <i> / <em>, <u> |
Đậm, nghiêng, gạch chân | |
<sub>, <sup> |
Chỉ số dưới (H₂O), chỉ số trên (x²) | |
<a> |
Liên kết | href, target="_blank" (mở thẻ mới) |
<img> |
Ảnh | src, alt, width, height |
<ul>, <ol>, <li> |
Danh sách không thứ tự, có thứ tự, mục | ol: type (1, A, a, I, i), start |
<table>, <tr>, <th>, <td> |
Bảng, hàng, ô tiêu đề, ô dữ liệu | colspan (gộp cột), rowspan (gộp hàng) |
<div>, <span> |
Khối (chiếm cả dòng), nội tuyến (nằm trong dòng) | class, id |
<video>, <audio> |
Video, âm thanh | src, controls, autoplay |
<iframe> |
Nhúng trang khác (bản đồ, video) | src, width, height |
<form>, <input>, <label>, <select>, <textarea> |
Biểu mẫu | type, name, id, for, required |
Liên kết
Cách viết href |
Ý nghĩa |
|---|---|
https://example.com/tin |
Đường dẫn tuyệt đối tới trang khác |
lien-he.html |
Tương đối: tệp cùng thư mục với trang hiện tại |
../index.html |
Tệp ở thư mục cha |
#lien-he |
Tới phần tử có id="lien-he" trong cùng trang |
mailto:clb@example.com |
Mở chương trình soạn thư |
Bảng: gộp ô bằng rowspan, colspan
<table border="1">
<tr>
<th>Buổi</th><th>Môn</th><th>Phòng</th>
</tr>
<tr>
<td rowspan="2">Sáng</td><td>Toán</td><td>P201</td>
</tr>
<tr>
<td>Tin học</td><td>P305</td>
</tr>
<tr>
<td>Chiều</td><td colspan="2">Tự học</td>
</tr>
</table>Bảng hiển thị 4 hàng × 3 cột. Ô "Sáng" kéo dài qua 2 hàng nên hàng thứ ba chỉ cần viết 2 ô; ô "Tự học" chiếm 2 cột:
| Buổi | Môn | Phòng |
|---|---|---|
| Sáng (gộp 2 hàng) | Toán | P201 |
| ↑ | Tin học | P305 |
| Chiều | Tự học (gộp 2 cột) | ← |
Biểu mẫu
type của <input> |
Tạo ra |
|---|---|
text, email, number, date |
Ô nhập chữ, thư điện tử, số, ngày |
password |
Ô nhập che kí tự |
radio |
Nút chọn một trong nhóm có cùng name |
checkbox |
Ô đánh dấu, chọn nhiều |
submit |
Nút gửi biểu mẫu |
<label for="x"> gắn với ô có id="x": nháy vào chữ cũng chọn ô. Thuộc tính required bắt buộc nhập trước khi gửi.
CSS: cú pháp và cách nhúng
Quy tắc CSS: bộ chọn { thuộc tính: giá trị; }. Ba cách đưa CSS vào trang:
| Cách | Viết ở đâu | Phạm vi |
|---|---|---|
| Nội tuyến | style="color: red;" trong thẻ |
Một phần tử |
| CSS trong | Thẻ <style> trong <head> |
Một trang |
| CSS ngoài | Tệp .css, liên kết bằng <link rel="stylesheet" href="…"> |
Nhiều trang dùng chung |
| Thuộc tính | Tác dụng | Ví dụ |
|---|---|---|
color, background-color |
Màu chữ, màu nền | #1e40af, rgb(30, 64, 175), navy |
font-family, font-size |
Phông, cỡ chữ | Arial, 18px |
font-weight, font-style |
Đậm, nghiêng | bold, italic |
text-align, text-decoration |
Căn lề, gạch chân/gạch ngang | center, underline |
line-height, text-indent |
Giãn dòng, thụt đầu dòng | 1.5, 20px |
width, height |
Kích thước vùng nội dung | 300px, 50% |
padding, border, margin |
Vùng đệm, viền, lề ngoài | 10px, 2px solid gray |
Bộ chọn và mức ưu tiên
| Bộ chọn | Chọn | Mức ưu tiên |
|---|---|---|
p |
Mọi thẻ p |
Thấp |
.ghi-chu |
Phần tử có class="ghi-chu" (nhiều phần tử dùng chung) |
Trung bình |
a:hover |
Liên kết khi rê chuột lên (lớp giả) | Trung bình |
#han-nop |
Phần tử có id="han-nop" (duy nhất trong trang) |
Cao |
div p |
Thẻ p nằm bên trong div (con cháu) |
Cộng dồn |
h2, h3 |
Nhóm: cả h2 và h3 |
Tính riêng từng bộ chọn |
Mô hình hộp
Mặc định, width chỉ là chiều rộng vùng nội dung. Chiều rộng tính đến hết viền:
Cộng thêm là khoảng chiếm chỗ trên trang. Viết tắt padding/margin: 1 giá trị → cả 4 phía; 2 giá trị →
(trên-dưới) (trái-phải); 4 giá trị → trên, phải, dưới, trái (theo chiều kim đồng hồ).
Dạng bài thường gặp trong đề thi
Dạng 1: Xác định định dạng khi nhiều quy tắc xung đột
Xem lời giải
Xét từng thuộc tính, chỉ so những quy tắc áp dụng được cho đoạn đó:
| Đoạn | Quy tắc đặt color |
Thắng | font-size |
|---|---|---|---|
| 1 | p (0; 0; 1), .ghi-chu (0; 1; 0) |
xanh lá (class) | 18px |
| 2 | p, .ghi-chu, #han-nop (1; 0; 0) |
đỏ (id) | 18px |
| 3 | p, nội tuyến |
xanh dương (nội tuyến) | 18px |
Cỡ chữ: div p (0; 0; 2) cao hơn p (0; 0; 1) và cả ba đoạn đều nằm trong div, nên đều là 18px — dù p ghi 16px.
Dạng 2: Tính kích thước theo mô hình hộp
Xem lời giải
padding: 12px 20px → trên-dưới 12px, trái-phải 20px. Chiều rộng đến hết viền:
Cộng lề ngoài hai bên: px. Bẫy thường gặp: lấy nhầm 12px làm padding trái-phải (ra 330px).
Dạng 3: Câu đúng/sai về biểu mẫu
Xem lời giải
- a) Đúng. Hai nút
radiocùngname="khoi"tạo thành một nhóm, chỉ chọn được một. - b) Sai.
checkboxcho phép đánh dấu nhiều ô; cùngnamechỉ để gửi các giá trị về cùng một trường. - c) Đúng.
<label for="m1">gắn với ô cóid="m1". - d) Sai. Ô họ tên có
required, trình duyệt báo lỗi và không gửi khi ô còn trống.
Dạng 4: Đọc danh sách lồng nhau
Xem lời giải
Trình duyệt hiển thị:
Lịch ôn tập
iii. Toán
◦ Đạo hàm
◦ Tích phân
iv. Tin học
1. Ngữ văn
type="i"đánh số La Mã chữ thường,start="3"bắt đầu từ iii.<ul>nằm bên trong mục Toán là một danh sách riêng: hai mục của nó có dấu tròn (trình duyệt dùng dấu tròn rỗng cho danh sách không thứ tự lồng bên trong) và không làm tăng số thứ tự của<ol>bên ngoài → Tin học là iv.<ol>thứ hai là danh sách mới, không cótype,start→ bắt đầu lại từ1.
Đáp án C. A sai vì đếm cả hai mục lồng; B coi hai <ol> là một danh sách; D quên type="i".
Dạng 5: Đường dẫn tương đối tới ảnh
Xem lời giải
Đường dẫn tương đối được tính từ thư mục chứa trang hiện tại, ở đây là web-12a/bai-viet/; .. nghĩa là lùi lên thư mục cha.
anh/lop.jpg→ trình duyệt tìmbai-viet/anh/lop.jpg: không có tệp.lop.jpg→ tìmbai-viet/lop.jpg: không có tệp.../bai-viet/anh/lop.jpg→ lùi raweb-12a/rồi vào lạibai-viet/anh/: không có tệp.../anh/lop.jpg→ lùi raweb-12a/rồi vàoanh/: tìm thấyanh/lop.jpg, hiển thị ảnh.
Đáp án D. Khi ảnh không tải được, trình duyệt hiện dòng chữ của alt ("Ảnh lớp"). Tương tự, từ trai-he.html muốn về trang chủ viết href="../index.html", muốn nạp CSS viết href="../css/giao-dien.css".
Dạng 6: Mô tả trang hiển thị theo CSS
Xem lời giải
Xét từng phần tử: quy tắc nào chọn được nó, thuộc tính nào được kế thừa từ phần tử cha.
| Phần tử | Màu chữ | Cỡ chữ | Viền |
|---|---|---|---|
div.khung |
đen | 16px | 1px navy |
h2 Ngày hội STEM |
navy | 24px | không |
p Thời gian |
đen | 16px | không |
p.phu Địa điểm |
đen | 13px | không |
h2 Đăng kí |
đen | 24px | không |
p.phu Hạn chót |
đen | 16px | không |
(Thẻ h2 mặc định có cỡ chữ gấp 1,5 lần chữ thường nên là 24px.)
- a) Đúng.
.khung h2chỉ chọnh2nằm trong.khung;h2"Đăng kí" ở ngoài nên kế thừa màu đen từbody. - b) Sai.
.khung .phulà bộ chọn con cháu: chỉ chọn phần tử có lớpphunằm trong.khung. Đoạn "Hạn chót" ở ngoài khung nên giữ 16px kế thừa từbody. - c) Sai.
borderkhông được kế thừa. Trang chỉ có một khung viền bao quanh cả ba phần tử bên trongdiv. - d) Đúng. Đoạn này nằm trong
.khung, có lớpphu→ 13px; màu đen kế thừa từbody.
Dạng 7 (bẫy): Liên kết không nhận màu chữ của phần tử cha
Xem lời giải
Màu chữ được kế thừa từ phần tử cha, nhưng kế thừa chỉ áp dụng khi phần tử không có giá trị riêng. Trình duyệt có sẵn quy tắc tô màu cho thẻ <a> (xanh lam với liên kết chưa mở, tím với liên kết đã mở), quy tắc này đặt thẳng lên <a> nên thắng màu trắng kế thừa từ .menu. Còn text-decoration: none đã bỏ gạch chân → B.
Kết quả thực tế: hai liên kết xanh lam đậm trên nền navy, gần như không đọc được. Cách sửa: đặt màu trực tiếp cho liên kết.
.menu a {
color: white;
text-decoration: none;
}A là bẫy "cứ phần tử con là nhận màu của cha"; C quên quy tắc bỏ gạch chân; D sai vì background-color không đổi màu chữ.
Lỗi thường gặp
Mẹo làm bài
Tự kiểm tra nhanh
- Thẻ nào hiển thị chữ "2" ở vị trí chỉ số dưới trong công thức H₂O?
Xem đáp án
<sub>: viết H<sub>2</sub>O. (<sup> là chỉ số trên, như x².)
- Liên kết
<a href="lich-thi.html" target="_blank">Lịch thi</a>mở trang đích ở đâu?
Xem đáp án
Mở trang lich-thi.html trong một thẻ (tab) mới của trình duyệt, thẻ đang xem vẫn giữ nguyên. Không có target="_blank" thì trang
đích mở thay cho trang hiện tại, ngay trong thẻ đang xem.
- Danh sách
<ol type="A" start="3">có hai mục. Hai mục được đánh dấu bằng gì?
Xem đáp án
C và D (kiểu chữ in hoa, bắt đầu từ vị trí thứ 3).
- Ở Dạng 1, nếu thêm quy tắc
div .ghi-chu { color: purple; }vào cuối thẻ<style>, màu của đoạn 1 và đoạn 2 là gì?
Xem đáp án
Đoạn 1 màu tím: div .ghi-chu (0; 1; 1) cao hơn .ghi-chu (0; 1; 0). Đoạn 2 vẫn màu đỏ: #han-nop (1; 0; 0) cao hơn (0; 1; 1).
- Khối có
width: 200px; padding: 10px; border: 1px solid; margin: 5px;. Chiều rộng tính đến hết viền là bao nhiêu?
Xem đáp án
px (chiếm chỗ px).
- Muốn 20 trang của một website dùng chung giao diện và chỉ sửa ở một nơi, nên dùng cách nhúng CSS nào?
Xem đáp án
CSS ngoài: viết quy tắc vào một tệp .css và liên kết vào từng trang bằng <link rel="stylesheet" href="…">.
Làm 10 câu luyện tập về tạo trang web với html và css và xem lời giải ngay sau mỗi câu.