4.1. Chèn hình ảnh (<img>)
4.1.1. Cấu trúc thẻ và các thuộc tính
Thẻ:
<img>(Image). Đây là thẻ đơn (không có thẻ đóng).Cú pháp:
HTML<img src="duong-dan-anh.jpg" alt="Mo ta buc anh" width="300">Giải thích chức năng:
src(Source): Đường dẫn tới file ảnh. (Bắt buộc phải có).alt(Alternative Text): Văn bản thay thế.Chức năng: Hiện ra khi ảnh bị lỗi (không tải được) và giúp Google hiểu nội dung bức ảnh (SEO).
width/height: Chiều rộng/chiều cao của ảnh (đơn vị pixel). Lưu ý: Chỉ nên set 1 trong 2 chiều để ảnh tự co giãn đúng tỷ lệ, tránh bị méo.
4.1.2. Đường dẫn Tuyệt đối và Tương đối (Rất quan trọng) Học sinh thường xuyên bị lỗi “ảnh không hiện” do sai đường dẫn.
Đường dẫn tuyệt đối (Absolute Path):
Là gì: Đường dẫn đầy đủ, bắt đầu bằng
https://. Thường dùng cho ảnh lấy từ website khác.Ví dụ:
<img src="https://vnexpress.net/logo.png">
Đường dẫn tương đối (Relative Path):
Là gì: Đường dẫn tính từ file HTML đang viết đến file ảnh trong máy tính.
Trường hợp 1 (Cùng cấp): File ảnh nằm cạnh file HTML.
src="hinh.jpg"
Trường hợp 2 (Trong thư mục con): Ảnh nằm trong thư mục
images.src="images/hinh.jpg"
Trường hợp 3 (Thư mục cha): File HTML nằm trong thư mục con, ảnh nằm ngoài.
src="../hinh.jpg"(Dấu../nghĩa là lùi ra ngoài 1 cấp).
4.2. Âm thanh và Video (HTML5 Multimedia) Trước đây web dùng Adobe Flash (đã khai tử), nay dùng HTML5 chuẩn.
4.2.1. Thẻ Âm thanh (<audio>)
Cú pháp:
HTML<audio controls autoplay muted loop> <source src="nhac-tre.mp3" type="audio/mpeg"> Trình duyệt của bạn không hỗ trợ phát nhạc. </audio>Giải thích chức năng các thuộc tính:
controls: Hiển thị thanh điều khiển (Play, Pause, Volume). Bắt buộc phải có nếu không nhạc sẽ không hiện.autoplay: Tự động phát khi vào trang (Lưu ý: Chrome thường chặn cái này để tránh làm phiền người dùng).loop: Tự động phát lại khi hết bài.muted: Tự động tắt tiếng (thường dùng kết hợp autoplay).
4.2.2. Thẻ Video (<video>)
Cú pháp:
HTML<video width="500" controls poster="hinh-bia.jpg"> <source src="phim-hoat-hinh.mp4" type="video/mp4"> </video>Giải thích:
poster: Hình ảnh bìa hiển thị khi video chưa chạy (giống thumbnail Youtube).Hỗ trợ tốt nhất định dạng
.mp4.
4.3. Nhúng nội dung (<iframe>)
Khái niệm:
<iframe>giống như một cái cửa sổ trên trang web của mình, nhưng nhìn sang trang web của người khác.Ứng dụng phổ biến:
Nhúng Youtube:
Vào Youtube -> Chọn Video -> Bấm “Chia sẻ” (Share) -> Chọn “Nhúng” (Embed) -> Copy đoạn code HTML.
Nhúng Google Maps:
Vào Google Maps -> Tìm địa điểm -> Bấm “Chia sẻ” -> “Nhúng bản đồ” -> Copy đoạn code HTML.
Ví dụ:
HTML<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID"
Bài tập 4.1: Xây dựng Album ảnh cá nhân
Yêu cầu: Tạo file
album.html.Thực hiện:
Tạo thư mục
imagestrong dự án. Tải 3-4 ảnh đẹp về lưu vào đó.Dùng thẻ
<img>hiển thị các ảnh ra màn hình.Thử nghiệm đường dẫn sai (gõ sai tên file) để xem dòng chữ
althiện lên như thế nào.Chỉnh
width="300px"cho tất cả ảnh để chúng bằng nhau tăm tắp.
Gợi ý làm bài
- Chuẩn bị thư mục và ảnh
Trong dự án, tạo một thư mục tên là
images.Tải về 3–4 ảnh đẹp (ví dụ:
anh1.jpg,anh2.jpg,anh3.jpg,anh4.jpg) và lưu vào thư mụcimages.
- Tạo file HTML
Mở trình soạn thảo (Notepad, VS Code…).
Tạo file mới và lưu với tên
album.html.
- Viết nội dung HTML
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Album ảnh cá nhân</title>
</head>
<body>
<h1>📸 Album ảnh cá nhân</h1>
<!-- Hiển thị ảnh -->
<img src="images/anh1.jpg" alt="Ảnh số 1" width="300px">
<img src="images/anh2.jpg" alt="Ảnh số 2" width="300px">
<img src="images/anh3.jpg" alt="Ảnh số 3" width="300px">
<img src="images/anh4.jpg" alt="Ảnh số 4" width="300px">
<!-- Thử nghiệm đường dẫn sai -->
<img src="images/sai-ten.jpg" alt="Ảnh bị lỗi, không tìm thấy" width="300px">
</body>
</html>
📌 Giải thích
<img src="images/anh1.jpg" alt="Ảnh số 1" width="300px">src: đường dẫn đến file ảnh trong thư mụcimages.alt: dòng chữ hiển thị khi ảnh không tìm thấy hoặc lỗi.width="300px": chỉnh kích thước ảnh bằng nhau.
Ảnh cuối cùng (
sai-ten.jpg) cố tình gõ sai tên để kiểm tra. Khi mở trang, ảnh đó sẽ không hiển thị, thay vào đó dòng chữ trongaltsẽ hiện ra.
Bài tập 4.2: Trang nghe nhạc trực tuyến
Yêu cầu: Tạo file
music.html.Thực hiện:
Tải một file nhạc
.mp3và một file video.mp4ngắn.Chèn thẻ
<audio>có đầy đủ thanh điều khiển (controls) và cho lặp lại (loop).Chèn thẻ
<video>có hình bìa (poster) là ảnh cá nhân của bạn.
Gợi ý làm bài:
Chuẩn bị tài nguyên
Một file nhạc định dạng
.mp3(ví dụ:song.mp3).Một file video ngắn định dạng
.mp4(ví dụ:video.mp4).Một ảnh cá nhân (ví dụ:
poster.jpg) để làm hình bìa cho video.
👉 Lưu tất cả các file này cùng thư mục với file
music.htmlđể dễ quản lý.
Tạo file HTML
Mở trình soạn thảo (Notepad, VS Code, Sublime Text…).
Tạo file mới và lưu với tên
music.html.
Viết nội dung HTML
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Trang nghe nhạc trực tuyến</title>
</head>
<body>
<h1>🎵 Trang nghe nhạc trực tuyến 🎵</h1>
<!-- Thẻ audio -->
<h2>Nghe nhạc</h2>
<audio src="song.mp3" controls loop>
Trình duyệt của bạn không hỗ trợ thẻ audio.
</audio>
<!-- Thẻ video -->
<h2>Xem video</h2>
<video src="video.mp4" controls poster="poster.jpg" width="480">
Trình duyệt của bạn không hỗ trợ thẻ video.
</video>
</body>
</html>
📌 Giải thích
<audio src="song.mp3" controls loop>controls: hiển thị thanh điều khiển (play, pause, âm lượng).loop: tự động phát lại khi hết bài.
<video src="video.mp4" controls poster="poster.jpg">controls: hiển thị thanh điều khiển video.poster="poster.jpg": hiển thị ảnh bìa trước khi video phát.width="480": đặt chiều rộng video (có thể thay đổi).
Bài tập 4.3: Tích hợp Bản đồ và Youtube (Thực tế)
Yêu cầu: Tạo trang
lien-he.html.Thực hiện:
Tạo bố cục 2 cột (dùng Table hoặc Div đã học).
Cột trái: Viết thông tin liên hệ (Địa chỉ, SĐT). Nhúng bản đồ Google Maps địa chỉ trường học của bạn vào dưới.
Cột phải: Nhúng Video giới thiệu về trường (tìm trên Youtube) vào.
Chạy thử và kiểm tra xem có bấm Play video được không.
Gợi ý Các bước thực hiện
Tạo file
lien-he.htmlGiữ nguyên nội dung cơ bản: thông tin liên hệ, bản đồ Google Maps, video Youtube.
Dùng Div để chia bố cục
Tạo một thẻ cha
containerchứa hai thẻ conleftvàright.
Thêm CSS với Flexbox
Dùng
display: flex;để chia bố cục thành 2 cột.Có thể thêm khoảng cách (
gap) và căn chỉnh (align-items,justify-content).
File html
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Liên hệ</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f9f9f9;
}
h1 {
text-align: center;
color: #333;
}
.container {
display: flex;
gap: 20px; /* khoảng cách giữa 2 cột */
}
.left, .right {
flex: 1; /* chia đều 2 cột */
background: #fff;
padding: 15px;
border-radius: 8px;
box-shadow: 0 0 8px rgba(0,0,0,0.1);
}
iframe {
width: 100%;
height: 300px;
border: none;
border-radius: 6px;
}
</style>
</head>
<body>
<h1>📍 Liên hệ trường học</h1>
<div class="container">
<!-- Cột trái -->
<div class="left">
<h2>Thông tin liên hệ</h2>
<p>Địa chỉ: 268 Lý Thường Kiệt, Quận 10, TP.HCM</p>
<p>SĐT: (028) 3864 7256</p>
<h3>Bản đồ Google Maps</h3>
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!...etc"
allowfullscreen="" loading="lazy"></iframe>
</div>
<!-- Cột phải -->
<div class="right">
<h2>Video giới thiệu trường</h2>
<iframe src="https://www.youtube.com/embed/VIDEO_ID"
title="YouTube video player"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</div>
</div>
</body>
</html>
📌 Giải thích
.container { display: flex; }→ chia bố cục thành 2 cột..left, .right { flex: 1; }→ mỗi cột chiếm 50% chiều rộng.gap: 20px;→ tạo khoảng cách giữa 2 cột.box-shadowvàborder-radius→ làm khung đẹp, hiện đại.iframe { width: 100%; }→ bản đồ và video tự co giãn theo chiều rộng cột.
4. Câu hỏi ôn tập
Câu hỏi: Tại sao thẻ
<img>không có thẻ đóng</img>?Trả lời: Vì thẻ
imglà thẻ rỗng (void element), nó chỉ chứa thuộc tính để hiển thị ảnh chứ không chứa nội dung văn bản bên trong.
Câu hỏi: Thuộc tính
alttrong thẻ ảnh có quan trọng không? Tại sao?Trả lời: Rất quan trọng. Nó giúp người khiếm thị (dùng máy đọc màn hình) hiểu bức ảnh là gì và giúp Google xếp hạng bài viết tốt hơn (SEO).
Câu hỏi: Sự khác biệt giữa đường dẫn
hinhanh/logo.pngvà../hinhanh/logo.png?Trả lời:
hinhanh/logo.pngnghĩa là tìm trong thư mục con.../hinhanh/logo.pngnghĩa là lùi ra thư mục cha rồi mới tìm vào thư mụchinhanh.
Câu hỏi: Tại sao nên nhúng Video từ Youtube (dùng iframe) thay vì tải video trực tiếp lên Hosting (dùng thẻ video)?
Trả lời: Vì video rất nặng. Tải lên Hosting cá nhân sẽ làm tốn băng thông và làm web chạy chậm. Nhúng từ Youtube giúp tiết kiệm dung lượng và tận dụng tốc độ tải nhanh của Google.