BÀI 4: MULTIMEDIA (ĐA PHƯƠNG TIỆN) VÀ NHÚNG NỘI DUNG

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:

    1. Nhúng Youtube:

      • Vào Youtube -> Chọn Video -> Bấm “Chia sẻ” (Share) -> Chọn “Nhúng” (Embed) -> Copy đoạn code HTML.

    2. 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:

    1. Tạo thư mục images trong dự án. Tải 3-4 ảnh đẹp về lưu vào đó.

    2. Dùng thẻ <img> hiển thị các ảnh ra màn hình.

    3. Thử nghiệm đường dẫn sai (gõ sai tên file) để xem dòng chữ alt hiện lên như thế nào.

    4. Chỉnh width="300px" cho tất cả ảnh để chúng bằng nhau tăm tắp.

Gợi ý làm bài

  1. 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ục images.

  2. 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.

  3. 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ục images.

    • 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ữ trong alt sẽ 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:

    1. Tải một file nhạc .mp3 và một file video .mp4 ngắn.

    2. Chèn thẻ <audio> có đầy đủ thanh điều khiển (controls) và cho lặp lại (loop).

    3. 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:

  1. 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ý.

 
  1. 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.

 
  1. 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:

    1. Tạo bố cục 2 cột (dùng Table hoặc Div đã học).

    2. 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.

    3. Cột phải: Nhúng Video giới thiệu về trường (tìm trên Youtube) vào.

    4. 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

  1. Tạo file lien-he.html

    • Giữ nguyên nội dung cơ bản: thông tin liên hệ, bản đồ Google Maps, video Youtube.

  2. Dùng Div để chia bố cục

    • Tạo một thẻ cha container chứa hai thẻ con leftright.

  3. 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-shadowborder-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

  1. Câu hỏi: Tại sao thẻ <img> không có thẻ đóng </img>?

    • Trả lời: Vì thẻ img là 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.

  2. Câu hỏi: Thuộc tính alt trong 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).

  3. Câu hỏi: Sự khác biệt giữa đường dẫn hinhanh/logo.png../hinhanh/logo.png?

    • Trả lời: hinhanh/logo.png nghĩa là tìm trong thư mục con. ../hinhanh/logo.png nghĩa là lùi ra thư mục cha rồi mới tìm vào thư mục hinhanh.

  4. 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.