Bài 8

Định dạng văn bản và phông chữ

Hô biến trang web đơn điệu trở nên rực rỡ và chuyên nghiệp với các thuộc tính định dạng HTML.

🚀

1. Khởi động (Engagement)

Chỉ với "bộ khung" HTML ở bài trước, trang web của chúng ta trông vẫn thật đơn điệu với những dòng chữ đen trên nền trắng khô khan. 📝🌑

💡 Hãy tưởng tượng: Nếu một cuốn sách giáo khoa không có đề mục lớn, không có chữ in đậm cho các từ khóa quan trọng và màu sắc nhạt nhẽo, liệu em có muốn đọc không?

Hôm nay, chúng ta sẽ học cách làm cho văn bản trở nên lôi cuốn và chuyên nghiệp hơn bằng các kỹ thuật Định dạng và Thay đổi phông chữ. Hãy biến trang web của em thành một tác phẩm nghệ thuật! ✨✍️

📖

2. Hình thành kiến thức (Knowledge)

Cho hai đoạn văn bản như Hình 8.1. Cách trình bày đoạn văn bản nào có định dạng đẹp hơn? Tại sao?

Trả lời: Đoạn văn bản có định dạng (có màu sắc, cỡ chữ, kiểu chữ khác nhau) sẽ đẹp hơn vì:

  • Dễ đọc và dễ theo dõi hơn
  • Phân cấp thông tin rõ ràng
  • Thu hút người đọc hơn
  • Chuyên nghiệp và thẩm mỹ hơn

1. Thuộc tính thẻ

Hoạt động 1: Nhận biết thuộc tính thẻ

Hãy quan sát các thể trong tệp HTML ở Bài 7. Trong các thể đó có một thể có thêm thuộc tính. Theo em đó là thể nào? Em hãy đưa ra dự đoán về tác dụng của các thuộc tính thể.

Mọi phần tử HTML đều có thể có thuộc tính. Thuộc tính của thể có tác dụng bổ sung thông tin, làm rõ các điều khiển được thể chỉ định.

Cú pháp để xác định thuộc tính: tên_thuộc_tính="giá trị", trừ các trường hợp đặc biệt chỉ cần tên thuộc tính để xác định giá trị Có hoặc Không.

Quy tắc về thuộc tính:

  • Thuộc tính nằm trong thể bắt đầu (không nằm trong thể kết thúc), sau tên thể
  • Trong trường hợp thể có nhiều hơn một thuộc tính thì các thuộc tính được ngăn cách bởi dấu cách

Ví dụ: Với thể có hai thuộc tính là thuộc_tính_1 nhận giá_trị_1 và thuộc_tính_2 nhận giá_trị_2, ta viết câu lệnh như sau:

<Tên_thể thuộc_tính_1="giá_trị_1" thuộc_tính_2="giá_trị_2"> Nội dung </Tên_thể>
Python Script

Ví dụ thực tế:

<p style="color: red; font-size: 16px;">Đoạn văn màu đỏ</p>
<div class="container" id="main">Nội dung trong div</div>
<a href="https://example.com" target="_blank">Link mở tab mới</a>
Python Script

Thuộc tính style: Một trong những thuộc tính được sử dụng thường xuyên nhất là thuộc tính style, dùng để thiết lập định dạng văn bản như chọn màu sắc, phông chữ, cỡ chữ, kiểu chữ, căn lề, tạo khung,... cho một phần tử HTML ngay tại vị trí được viết.

Thể có thể có hoặc không có thuộc tính. Thuộc tính của thể có tác dụng bổ sung thông tin, làm rõ cách xử lí cho thể chứa nó.

Các thuộc tính phổ biến:

  • style: Định dạng CSS nội tuyến
  • class: Tên lớp CSS
  • id: Định danh duy nhất
  • href: Đường dẫn (cho thẻ a)
  • src: Nguồn (cho thẻ img, script)
  • alt: Text thay thế (cho thẻ img)
  • title: Tiêu đề (hiển thị khi hover)
  • width, height: Kích thước
  • target: Cách mở link

2. Các thẻ định dạng trình bày văn bản

Hoạt động 2: Xác định thành phần cấu thành một văn bản

Thảo luận: Khi trình bày một văn bản (bài thơ, đoạn văn, trang web,...) có thể có những thành phần nào? Hãy kể tên các thành phần đó.

Các thành phần cấu thành văn bản:

  • Tiêu đề chính, tiêu đề phụ
  • Đoạn văn bản
  • Từ khóa, từ quan trọng
  • Danh sách, gạch đầu dòng
  • Trích dẫn
  • Chữ in đậm, in nghiêng
  • Hình ảnh, minh họa
  • Liên kết
  • Tác giả, ngày tháng

a) Định dạng tiêu đề

Để định dạng tiêu đề và các tiêu đề con xuất hiện trong văn bản, ta sử dụng các thẻ dạng <hx> trong đó x nhận một trong các giá trị từ 1 đến 6, thể hiện độ quan trọng giảm dần của nội dung. Thẻ <h1> nên được sử dụng cho tiêu đề chính hay tiêu đề chung của cả văn bản. Các tiêu đề ở mức thấp hơn dùng thẻ <h2> và tiếp tục với các mức tiếp theo,...

Cấu trúc thẻ tiêu đề:

<h1>Tiêu đề cấp 1 (quan trọng nhất)</h1>
<h2>Tiêu đề cấp 2</h2>
<h3>Tiêu đề cấp 3</h3>
<h4>Tiêu đề cấp 4</h4>
<h5>Tiêu đề cấp 5</h5>
<h6>Tiêu đề cấp 6 (ít quan trọng nhất)</h6>
Python Script

Khi sử dụng thẻ <hx>, trình duyệt sẽ:

  • Sử dụng chúng để hiển thị trang web và định dạng văn bản giúp người dùng đọc lướt trang web theo tiêu đề
  • Các công cụ tìm kiếm sử dụng thẻ này để xác định cấu trúc và nội dung trang web

Quy tắc sử dụng thẻ tiêu đề:

  • Chỉ dùng một thẻ <h1> cho mỗi trang (tiêu đề chính)
  • Không bỏ cấp tiêu đề (từ h1 nhảy h3)
  • Sử dụng theo thứ tự phân cấp logic
  • Nội dung tiêu đề phải phản ánh đúng nội dung bên dưới

Ví dụ thực tế:

<article>
    <h1>Hướng dẫn học HTML</h1>
    <h2>Chương 1: Giới thiệu HTML</h2>
    <h3>1.1 HTML là gì?</h3>
    <p>Nội dung giải thích...</p>
    <h3>1.2 Lịch sử HTML</h3>
    <p>Nội dung lịch sử...</p>
    <h2>Chương 2: Cú pháp HTML cơ bản</h2>
    <h3>2.1 Thẻ và phần tử</h3>
    <p>Nội dung thẻ...</p>
</article>
Python Script

Lưu ý quan trọng:

  • Thẻ tiêu đề không chỉ để định dạng mà còn có ý nghĩa về cấu trúc và SEO
  • Sử dụng đúng cấu trúc tiêu đề giúp công cụ tìm kiếm hiểu rõ nội dung trang web
  • Người dùng có thể lướt trang web dễ dàng qua các tiêu đề
🧩

3. Luyện tập (Practice)

Luyện tập

  1. Tìm ví dụ về phần tử HTML không thể lồng, tức là không thể có quan hệ cha – con trong cây thông tin của trang web.

Trả lời: Các phần tử HTML không thể lồng vào nhau là các phần tử khối (block-level elements) và một số phần tử đặc biệt. Ví dụ:

a) Các phần tử không thể lồng vào nhau:

  • <p> không thể chứa <p> khác
  • <h1> đến <h6> không thể chứa các thẻ tiêu đề khác
  • <div> có thể chứa nhiều phần tử khác nhưng không nên lồng quá sâu

Ví dụ sai (không hợp lệ):

<p>
    <p>Đoạn văn bên trong đoạn văn khác</p>
</p>
Python Script

Ví dụ đúng (hợp lệ):

<p>
    <span>Đoạn văn có thể chứa span</span>
    <strong>Và các thẻ nội tuyến khác</strong>
</p>
Python Script

b) Các phần tử có thể lồng:

  • <div> có thể chứa <p>, <h1>, <ul>, <table>,...
  • <li> có thể chứa <div>, <p>, <span>,...
  • <td> có thể chứa hầu hết các phần tử khác

c) Quy tắc lồng nhau:

  • Phần tử khối (block) có thể chứa phần tử khối và phần tử nội tuyến (inline)
  • Phần tử nội tuyến chỉ có thể chứa phần tử nội tuyến khác
  • Không lồng phần tử khối bên trong phần tử nội tuyến
  1. Chọn một văn bản đơn giản. Soạn thảo tệp HTML để hiển thị nội dung văn bản đó. Vẽ cây thông tin các phần tử HTML của trang web vừa soạn thảo.

Ví dụ thực hiện:

Văn bản gốc:

BÀI THỌ LƯƠNG
Tác giả: Nguyễn Duy

Bài thơ "Thơ Lương" là một trong những tác phẩm nổi tiếng của Nguyễn Duy, thể hiện sâu sắc tâm trạng của người lính trong chiến tranh.

Nội dung chính:
- Sự đối lập giữa quá khứ và hiện tại
- Nỗi nhớ quê hương
- Khát vọng hòa bình
Python Script

Tệp HTML tương ứng:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Bài Thơ Lương</title>
</head>
<body>
    <h1>BÀI THỌ LƯƠNG</h1>
    <p><strong>Tác giả:</strong> Nguyễn Duy</p>
    <p>Bài thơ "Thơ Lương" là một trong những tác phẩm nổi tiếng của Nguyễn Duy, thể hiện sâu sắc tâm trạng của người lính trong chiến tranh.</p>
    
    <h2>Nội dung chính:</h2>
    <ul>
        <li>Sự đối lập giữa quá khứ và hiện tại</li>
        <li>Nỗi nhớ quê hương</li>
        <li>Khát vọng hòa bình</li>
    </ul>
</body>
</html>
Python Script

Cây thông tin các phần tử HTML:

<!DOCTYPE html>
└── html
    ├── head
    │   ├── meta
    │   └── title
    └── body
        ├── h1 (BÀI THỌ LƯƠNG)
        ├── p
        │   └── strong (Tác giả:)
        ├── p (Bài thơ "Thơ Lương"...)
        ├── h2 (Nội dung chính:)
        └── ul
            ├── li (Sự đối lập...)
            ├── li (Nỗi nhớ quê hương)
            └── li (Khát vọng hòa bình)
Python Script

Phân tích cây thông tin:

  • Gốc: html là phần tử gốc
  • Nhánh chính: head và body là hai nhánh con trực tiếp
  • Cấu trúc phân cấp: Các phần tử được sắp xếp theo thứ tự phân cấp rõ ràng
  • Mối quan hệ cha-con:
    • html → head, body
    • body → h1, p, h2, ul
    • p → strong
    • ul → li

Bài tập thực hành thêm:

Bài 1: Xác định lỗi lồng nhau Tìm và sửa lỗi trong đoạn mã sau:

<div>
    <p>Đoạn văn thứ nhất
        <p>Đoạn văn thứ hai</p>
    </p>
</div>
Python Script

Sửa lại:

<div>
    <p>Đoạn văn thứ nhất</p>
    <p>Đoạn văn thứ hai</p>
</div>
Python Script

Bài 2: Vẽ cây thông tin Cho đoạn mã HTML sau, vẽ cây thông tin tương ứng:

<article>
    <header>
        <h1>Tiêu đề bài viết</h1>
        <p>Tác giả: Nguyễn Văn A</p>
    </header>
    <section>
        <h2>Mục 1</h2>
        <p>Nội dung mục 1</p>
    </section>
    <section>
        <h2>Mục 2</h2>
        <p>Nội dung mục 2</p>
    </section>
</article>
Python Script

Mẹo phân tích cây thông tin:

  • Bắt đầu từ <!DOCTYPE html> và html
  • Vẽ theo chiều dọc từ trên xuống dưới
  • Dùng đường thẳng nối cha → con
  • Thụt lề cho các cấp con
  • Kiểm tra logic lồng nhau
🌟

4. Vận dụng (Application)

Vận dụng

  1. Em hãy tìm trên mạng các trang web hỗ trợ soạn thảo HTML trực tuyến.

Các trang web hỗ trợ soạn thảo HTML trực tuyến phổ biến:

a) w3schools.com

  • Địa chỉ: https://www.w3schools.com/html/tryit.asp?filename=tryhtml_default
  • Đặc điểm:
    • Giao diện soạn thảo trực quan với 2 khung: mã nguồn và kết quả
    • Hỗ trợ nhiều ngôn ngữ lập trình khác (CSS, JavaScript)
    • Có các ví dụ mẫu và hướng dẫn chi tiết
    • Tự động hoàn thành cú pháp
    • Có thể chia sẻ kết quả

b) tutorialspoint.com

c) codepen.io

  • Địa chỉ: https://codepen.io/pen/
  • Đặc điểm:
    • Nâng cao hơn, hỗ trợ CSS và JavaScript
    • Giao diện chuyên nghiệp
    • Có thể tạo và lưu các dự án
    • Cộng đồng lớn để học hỏi

d) jsfiddle.net

  • Địa chỉ: https://jsfiddle.net/
  • Đặc điểm:
    • Tập trung vào JavaScript nhưng cũng hỗ trợ HTML/CSS
    • Có thể chia sẻ và nhúng kết quả
    • Giao diện gọn gàng

e) html-online-editor.com

Cách sử dụng các trình soạn thảo trực tuyến:

  1. Truy cập trang web
  2. Nhập mã HTML vào khung soạn thảo
  3. Nhấn nút "Run", "Execute" hoặc "Try it"
  4. Xem kết quả ngay lập tức ở khung bên cạnh
  5. Chỉnh sửa mã và chạy lại để kiểm tra

Lợi ích của soạn thảo trực tuyến:

  • Không cần cài đặt phần mềm
  • Kết quả hiển thị ngay lập tức
  • Dễ dàng chia sẻ và học hỏi
  • Truy cập từ bất kỳ thiết bị có Internet
  1. Sử dụng phần mềm soạn thảo HTML và soạn thảo trang web có nội dung như Hình 7.7. Lưu ý rằng thể <img> với tính năng thể hiện ảnh trên trang web có cú pháp: <img src="tên tệp ảnh">, trong đó "tên tệp ảnh" chính là đường dẫn của tệp hình ảnh cần đưa lên trang.

Bài tập thực hành: Soạn thảo trang web với hình ảnh

Yêu cầu: Tạo một trang web giới thiệu về một địa điểm du lịch tại Việt Nam, bao gồm:

  • Tiêu đề chính
  • Tiêu đề phụ
  • Đoạn giới thiệu ngắn
  • Hình ảnh địa điểm
  • Các thông tin nổi bật

Mã nguồn tham khảo:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Vịnh Hạ Long - Kỳ quan thiên nhiên</title>
</head>
<body>
    <h1>Vịnh Hạ Long</h1>
    <h2>Kỳ quan thiên nhiên thế giới</h2>
    
    <p>Vịnh Hạ Long là một vịnh nhỏ trên vịnh Bắc Bộ với khu vực biển có diện tích khoảng 1.553 km², bao gồm 1.969 hòn đảo lớn nhỏ.</p>
    
    <img src="https://via.placeholder.com/600x400/4CAF50/FFFFFF?text=Vịnh+Hạ+Long" alt="Vịnh Hạ Long">
    
    <h3>Các thông tin nổi bật:</h3>
    <ul>
        <li>Được UNESCO công nhận là Di sản Thiên nhiên Thế giới</li>
        <li>Có hơn 1.900 hòn đảo lớn nhỏ</li>
        <li>Nơi có hệ thống hang động karst lớn và đẹp nhất thế giới</li>
        <li>Thu hút hàng triệu du khách mỗi năm</li>
    </ul>
    
    <p style="color: blue; font-style: italic;">
        <strong>Lưu ý:</strong> Hình ảnh chỉ mang tính minh họa. Trong thực tế, bạn cần thay thế đường dẫn ảnh bằng ảnh thực tế.
    </p>
</body>
</html>
Python Script

Giải thích mã nguồn:

a) Thẻ hình ảnh <img>:

<img src="đường_dẫn_ảnh" alt="mô tả ảnh">
Python Script
  • src: Đường dẫn đến file hình ảnh
  • alt: Text mô tả ảnh (hiển thị khi ảnh không tải được)
  • Lưu ý: Thẻ <img> là thẻ đơn, không có thẻ đóng

b) Các loại đường dẫn ảnh:

  • Đường dẫn tuyệt đối: https://example.com/image.jpg
  • Đường dẫn tương đối: images/photo.jpg
  • Đường dẫn base64: Dữ liệu ảnh được mã hóa trực tiếp trong HTML

c) Các thuộc tính khác của thẻ img:

<img src="photo.jpg" alt="Mô tả" width="300" height="200" title="Tiêu đề ảnh">
Python Script
  • width: Chiều rộng ảnh (pixel)
  • height: Chiều cao ảnh (pixel)
  • title: Tiêu đề hiển thị khi hover chuột

Bài tập mở rộng:

Bài 1: Tạo trang giới thiệu sản phẩm

  • Tên sản phẩm, hình ảnh sản phẩm
  • Mô tả tính năng, lợi ích
  • Giá sản phẩm
  • Nút đặt hàng (sử dụng thẻ <button>)

Bài 2: Tạo trang portfolio cá nhân

  • Ảnh cá nhân
  • Giới thiệu ngắn về bản thân
  • Các kỹ năng (dạng danh sách)
  • Liên kết mạng xã hội

Bài 3: Tạo trang công thức nấu ăn

  • Tên món ăn, hình ảnh
  • Nguyên liệu (dạng danh sách)
  • Các bước thực hiện (dạng danh sách có thứ tự)
  • Mẹo nhỏ (in đậm, màu sắc)

Thử nghiệm trên các nền tảng khác nhau:

  • Trên w3schools: Sao chép mã và dán vào khung soạn thảo
  • Trên VS Code: Lưu file với đuôi .html và mở bằng trình duyệt
  • Trên Notepad: Lưu file với encoding UTF-8 và đuôi .html

Kết quả học tập: Sau khi hoàn thành vận dụng, học sinh sẽ biết cách sử dụng các công cụ soạn thảo HTML trực tuyến và tạo được trang web có hình ảnh với cấu trúc hoàn chỉnh.

Ghi nhớ kiến thức 🎯

  • ✅ Thuộc tính: Bổ sung thông tin cho thẻ, cú pháp tên="giá trị"
  • ✅ Thuộc tính style: Định dạng CSS nội tuyến style="property: value"
  • ✅ Thẻ tiêu đề: <h1> đến <h6> theo thứ tự quan trọng giảm dần
  • ✅ Quy tắc lồng: Phần tử khối chứa phần tử khối và nội tuyến
  • ✅ Thẻ img: <img src="đường dẫn" alt="mô tả"> (thẻ đơn)
  • ✅ Công cụ online: w3schools, tutorialspoint, codepen

Chúc mừng bạn đã hoàn thành bài học này! 🏆