1. Khởi động (Engagement)
Khi đọc sách báo in truyền thống, mắt chúng ta dễ dàng bị thu hút bởi các kiểu chữ nghệ thuật, những tiêu đề in hoa đậm nét, hay những đoạn trích dẫn được in nghiêng trang trọng. Trên các trang web hiện đại cũng vậy:
- Một trang tin công nghệ thường sử dụng kiểu chữ thanh mảnh, hiện đại, không chân để tạo cảm giác tươi mới, gọn gàng.
- Một trang web văn học hay lịch sử lại ưa chuộng phông chữ có chân cổ điển, mang vẻ đẹp uy nghiêm và lắng đọng. 📜✒️
💡 Thảo luận mở đầu:
Làm thế nào để các nhà thiết kế web có thể điều khiển kích thước từng cỡ chữ, màu sắc, khoảng cách dòng, độ thụt đầu dòng và căn chỉnh đều hai bên mép trang cho hàng nghìn bài viết một cách tự động và chuyên nghiệp?
Trả lời gợi ý:
- Chúng ta sử dụng hệ thống các thuộc tính định dạng văn bản và phông chữ phong phú của CSS kết hợp với tính kế thừa (inheritance) và thứ tự ưu tiên để tạo nên giao diện đọc dễ chịu, chuẩn mực Typography trên mọi màn hình.
2. Hình thành kiến thức (Knowledge)
1. Các thuộc tính CSS định dạng văn bản
a) Định dạng phông chữ (Typography)
-
font-family(Họ phông chữ): Chỉ định kiểu phông chữ hiển thị. Do mỗi máy tính người dùng cài đặt các bộ phông khác nhau, CSS cho phép liệt kê một danh sách các phông ưu tiên từ trái sang phải, kết thúc bằng một họ phông chung:Python Script[!NOTE] Nếu tên phông chữ có chứa khoảng trắng, bắt buộc phải đặt trong dấu ngoặc kép (ví dụ:
"Times New Roman","Courier New").5 nhóm phông chữ tiêu chuẩn trong thiết kế Web:
sans-serif(Không chân): Nét chữ thẳng, dứt khoát, hiện đại (Arial, Roboto, Open Sans). Dễ đọc nhất trên màn hình máy tính và điện thoại.serif(Có chân): Chân chữ có các gạch nhỏ đỡ bên dưới (Times New Roman, Georgia). Thường dùng cho sách báo in, tài liệu trang trọng.monospace(Đơn cách): Tất cả các ký tự có bề ngang bằng hệt nhau (Consolas, Courier New). Chuyên dùng hiển thị mã nguồn lập trình.cursive(Chữ viết tay): Nét uốn lượn, mềm mại (Comic Sans MS, Dancing Script). Phù hợp thiệp mời, đề từ.fantasy(Nghệ thuật/Trừu tượng): Nét chữ cách điệu trang trí (Impact, Algerian). Dùng cho bìa poster.
-
font-size(Cỡ chữ):- Đơn vị tuyệt đối:
px(pixel màn hình),pt(point - 1/72 inch). Ví dụ:font-size: 16px;. - Đơn vị tương đối:
em(gấp n lần cỡ chữ của phần tử cha),rem(gấp n lần cỡ chữ phần tử gốchtml),%. Ví dụ:font-size: 1.2em;.
- Đơn vị tuyệt đối:
-
font-style(Kiểu dáng chữ):normal(chữ đứng thẳng bình thường) hoặcitalic(chữ in nghiêng). -
font-weight(Độ đậm của chữ):normal(nét thường 400),bold(in đậm 700), hoặc các giá trị số từ100đến900.
b) Định dạng màu chữ (color)
Thuộc tính color xác định màu sắc của ký tự văn bản. Ta có thể khai báo bằng tên tiếng Anh cơ bản (red, blue, green, purple, black, white,...) hoặc mã màu Hex/RGB.
c) Định dạng dòng văn bản (Text Formatting)
line-height(Khoảng cách dòng): Khoảng cách giữa các đường cơ sở (baseline) của hai dòng văn bản liền kề. Giúp văn bản thoáng đãng, không bị dí sát nhau gây mỏi mắt:Python Scripttext-align(Căn lề khối chữ): Nhận 4 giá trị:left(căn trái),center(căn giữa),right(căn phải),justify(căn đều hai biên mép).text-decoration(Đường kẻ trang trí):underline: Đường gạch chân dưới chữ.overline: Đường gạch ngang trên đỉnh đầu chữ.line-through: Đường gạch xuyên qua giữa chữ (dùng cho giá cũ gạch đi khi giảm giá).none: Bỏ đường gạch mặc định (rất hay dùng để xóa gạch chân của thẻ<a>).
text-indent(Thụt lề dòng đầu): Thụt lề ký tự đầu tiên của đoạn văn. Ví dụ:text-indent: 2em;hoặctext-indent: 20px;.
2. Tính kế thừa và Quy tắc ưu tiên trong CSS
a) Tính kế thừa (Inheritance)
Trong mô hình phân cấp cây DOM của HTML, các phần tử con nằm bên trong sẽ tự động kế thừa các định dạng chữ từ phần tử cha bao bọc nó:
Toàn bộ tiêu đề <h1>, đoạn văn <p>, thẻ <li> nằm trong <body> sẽ tự động hiển thị với phông Arial và màu xám đậm mà không cần phải viết CSS lặp lại cho từng thẻ!
b) Thứ tự ưu tiên theo vị trí xuất hiện (Cascading)
Nếu một phần tử HTML nhận hai quy tắc CSS cùng áp dụng lên một thuộc tính từ cùng cấp độ chọn, quy tắc nào được viết sau cùng (ở vị trí dưới) sẽ ghi đè lên quy tắc viết phía trước:
c) Bộ chọn toàn cục * và Từ khóa !important
- Bộ chọn
*(Universal Selector): Tác động lên mọi phần tử HTML trong trang web nhưng có mức độ ưu tiên thấp nhất. Bất kỳ quy tắc cụ thể nào khác cũng sẽ ghi đè lên nó. - Từ khóa
!important: Đặt ngay sau giá trị thuộc tính. Khi được gắn!important, thuộc tính đó sẽ được trao quyền ưu tiên tuyệt đối cao nhất, bất chấp vị trí xuất hiện hay cấp độ ưu tiên của các quy tắc khác:Python Script
3. Luyện tập thực hành (Practice)
Nhiệm vụ 1: Thiết lập định dạng bài viết "Kĩ thuật chia để trị" (Trang 81 SGK)
Yêu cầu:
- Các tiêu đề: Căn lề trái, cỡ chữ
16px, chữ màu đỏ (red), phông chữ không chân (sans-serif). - Các dòng văn bản: Thụt lề dòng đầu
2em, căn lề trái (left), phông chữ có chân (serif).
Nhiệm vụ 2: Biến thể nâng cao với căn đều hai bên và chữ in đậm (Trang 82 SGK)
Yêu cầu:
- Tiêu đề: Căn giữa (
center), cỡ chữ16px, màu xanh dương (blue), phông không chân (sans-serif). - Đoạn văn: Thụt đầu dòng
2em, căn đều hai bên (justify). - Các từ in đậm
<strong>và in nghiêng<em>giữ nguyên cỡ chữ gốc (font-size: 100%).
Phân loại các phông chữ phổ biến (Luyện tập 1 - Trang 82 SGK)
| Tên phông chữ | Thuộc nhóm họ phông (Font Family) | Đặc trưng nhận diện |
|---|---|---|
| Times New Roman | serif | Có chân đỡ cổ điển, chuẩn in ấn văn kiện. |
| Courier New | monospace | Đơn cách, độ rộng các ký tự bằng hệt nhau như máy đánh chữ. |
| Abadi / Berlin Sans FB | sans-serif | Không chân, hình khối góc cạnh rõ ràng. |
| Bradley Hand ITC | cursive | Phông mô phỏng nét viết tay cá nhân. |
| ALGERIAN | fantasy | Phông nghệ thuật, hoa văn đục nét viền ngoài. |
| Consolas / Cascadia | monospace | Phông lập trình hiển thị code trong VS Code / Terminal. |
4. Vận dụng (Application)
Vận dụng 1 (Trang 82 SGK): Mở rộng các thuộc tính đồ họa chữ nâng cao
Bên cạnh các thuộc tính cơ bản, CSS hiện đại cung cấp nhiều công cụ kiểm soát thẩm mỹ chữ đỉnh cao:
letter-spacing: Khoảng cách giữa các ký tự liên tiếp (ví dụ:letter-spacing: 2px;giúp tiêu đề mở rộng khoảng thở sang trọng).word-spacing: Khoảng cách giữa các từ trong câu (ví dụ:word-spacing: 4px;).text-shadow: Hiệu ứng đổ bóng chữ rực rỡ theo công thứctext-shadow: x y độ_nhòe màu_bóng;:Python Scriptfont-variant: Chuyển đổi chữ in hoa nhỏ đặc biệtsmall-caps(biến toàn bộ ký tự thường thành chữ in hoa nhưng có chiều cao bằng chữ thường).
Vận dụng 2 (Trang 82 SGK): Trình bày bài thơ "Trời Hà Nội xanh"
Ghi nhớ kiến thức cốt lõi 🎯
- 🅰️ Thuộc tính phông chữ:
font-family(chỉ định phông và danh sách dự phòng kết thúc bằng họ phôngserif,sans-serif,monospace),font-size(px,em,rem),font-style(italic),font-weight(bold,400..900). - 📏 Định dạng dòng:
line-height(chiều cao dòng tính từ đường baseline),text-align(left,center,right,justify),text-indent(thụt đầu dòng),text-decoration(none,underline,line-through). - 🌳 Cơ chế kế thừa (Inheritance): Các thẻ con tự động hưởng các định dạng kiểu chữ từ thẻ cha chứa nó trong cây HTML.
- ⚖️ Thứ tự ưu tiên và
!important: Cùng mức chọn, lệnh CSS viết sau sẽ ghi đè lệnh viết trước; bộ chọn toàn cục*có độ ưu tiên thấp nhất; từ khóa!importantmang mức ưu tiên cao nhất.