Thẻ Iframe trong HTML: Hướng dẫn Toàn tập từ A-Z

Bạn muốn nhúng video YouTube, bản đồ Google, hay thậm chí một trang web khác vào bài viết của mình? Thẻ iframe trong HTML chính là chìa khóa giúp bạn thực hiện điều này một cách dễ dàng. Tuy nhiên, làm sao để sử dụng nó hiệu quả mà không ảnh hưởng đến SEO hay bảo mật? WiWeb sẽ cùng bạn tìm hiểu toàn bộ kiến thức về iframe, từ khái niệm cơ bản đến các kỹ thuật nâng cao trong bài viết này.

Thẻ iframe là gì?

Nếu bạn là người mới bắt đầu lập trình web, chắc hẳn bạn đã nghe qua về thẻ iframe. Hiểu đơn giản, iframe (viết tắt của Inline Frame) là một thẻ HTML cho phép bạn nhúng một tài liệu HTML khác vào bên trong trang web hiện tại. Hãy tưởng tượng nó như một “cửa sổ nhỏ” trên trang của bạn, nơi bạn có thể hiển thị nội dung từ một nguồn hoàn toàn khác.

Giới thiệu về Inline Frame

Cơ chế hoạt động của iframe là tạo ra một khung nội tuyến độc lập. Điều này có nghĩa là nội dung bên trong iframe có bối cảnh duyệt web riêng, bao gồm lịch sử phiên, cookie và bộ nhớ đệm riêng. Nhờ vậy, bạn có thể hiển thị nội dung từ các trang web bên thứ ba như video YouTube, bản đồ Google Maps, hoặc các bài đăng mạng xã hội mà không làm ảnh hưởng đến cấu trúc trang chính.

Sự khác biệt chính giữa thẻ frame và iframe là gì?

Có thể bạn sẽ thắc mắc về thẻ <frame>. Trước đây, thẻ <frame> được dùng để chia cửa sổ trình duyệt thành nhiều phần, mỗi phần hiển thị một tài liệu HTML riêng biệt. Tuy nhiên, thẻ <frame> đã lỗi thời và không còn được hỗ trợ trong HTML5.

Sự khác biệt cốt lõi là:

  • <frame>: Phải được sử dụng trong một tập thẻ <frameset>, dùng để xây dựng toàn bộ bố cục của trang. Nó rất cứng nhắc và gây nhiều vấn đề về SEO cũng như trải nghiệm người dùng.
  • <iframe>: Linh hoạt hơn rất nhiều. Bạn có thể đặt nó ở bất kỳ đâu trong phần <body> của trang, giống như một hình ảnh hay một đoạn văn bản. Đây là tiêu chuẩn hiện đại để nhúng nội dung.
Thẻ iframe là gì? Giải mã khái niệm cơ bản
Thẻ iframe là gì? Giải mã khái niệm cơ bản

Cú pháp và cách sử dụng thẻ iframe trong HTML

Hiểu được khái niệm rồi, bây giờ chúng ta sẽ đến phần thực hành. Cách dùng thẻ iframe thực sự rất đơn giản. Bạn chỉ cần nắm vững cú pháp cơ bản và một vài thuộc tính quan trọng là có thể sử dụng thành thạo.

Cấu trúc thẻ iframe cơ bản nhất

Cú pháp để tạo một iframe chỉ cần một thẻ duy nhất với thuộc tính bắt buộc là src (source – nguồn).

<iframe src="URL_của_trang_bạn_muốn_nhúng"></iframe>

Trong đó, URL_của_trang_bạn_muốn_nhúng chính là địa chỉ trang web hoặc tài liệu bạn muốn hiển thị bên trong iframe.

Ví dụ về cú pháp iframe đơn giản

Giả sử bạn muốn nhúng trang chủ của WiWeb vào website của mình. Bạn chỉ cần viết một dòng code như sau:

<iframe src="https://wiweb.vn"></iframe>

Chỉ với dòng lệnh này, một khung nội tuyến hiển thị trang WiWeb sẽ xuất hiện trên trang của bạn. Rất đơn giản phải không nào? Tuy nhiên, để iframe hiển thị đẹp mắt và hoạt động đúng ý, chúng ta cần tìm hiểu thêm về các thuộc tính của nó.

Cú pháp và cách sử dụng thẻ iframe trong HTML
Cú pháp và cách sử dụng thẻ iframe trong HTML

Toàn bộ các thuộc tính thẻ iframe quan trọng cần biết

Để kiểm soát hoàn toàn cách iframe hiển thị và hoạt động, bạn cần nắm rõ các thuộc tính của nó. Dưới đây là danh sách những thuộc tính quan trọng nhất mà WiWeb đã tổng hợp cho bạn.

  • src: Đây là thuộc tính quan trọng nhất. Nó chỉ định URL của trang web hoặc tài liệu sẽ được hiển thị bên trong iframe. Nếu thiếu thuộc tính này, iframe sẽ là một khung trống.
  • widthheight: Hai thuộc tính này giúp bạn tùy chỉnh kích thước của khung iframe. Bạn có thể sử dụng giá trị pixel (ví dụ: width="800") hoặc phần trăm (ví dụ: width="100%").
    <iframe src="URL" width="600" height="400"></iframe>
    
  • name: Đặt một tên định danh cho iframe. Thuộc tính này rất hữu ích khi bạn muốn tương tác với iframe bằng JavaScript hoặc khi bạn muốn một liên kết (<a>) mở trang trong một iframe cụ thể bằng thuộc tính target.
  • frameborder: Thuộc tính này dùng để xác định có hiển thị đường viền xung quanh iframe hay không. Giá trị "1" là có và "0" là không. Để xóa đường viền của iframe, bạn chỉ cần thiết lập frameborder="0". Lưu ý, thuộc tính này đã lỗi thời trong HTML5, thay vào đó bạn nên sử dụng CSS.
  • allowfullscreen: Một thuộc tính boolean (không cần giá trị). Khi có thuộc tính này, iframe có thể được phép hiển thị ở chế độ toàn màn hình. Điều này cực kỳ cần thiết khi bạn nhúng video YouTube bằng iframe.
  • Các thuộc tính HTML5 khác:
    • scrolling: Có giá trị là yes, no, hoặc auto. Nó xác định xem thanh cuộn có nên xuất hiện trong iframe hay không. Tương tự frameborder, thuộc tính này cũng được khuyến khích thay thế bằng CSS.
    • loading: Một thuộc tính mới rất hay. Với giá trị loading="lazy", trình duyệt sẽ chỉ tải nội dung của iframe khi người dùng cuộn đến gần nó. Điều này giúp cải thiện đáng kể tốc độ tải trang ban đầu.
Toàn bộ các thuộc tính thẻ iframe quan trọng cần biết
Toàn bộ các thuộc tính thẻ iframe quan trọng cần biết

Hướng dẫn ứng dụng iframe vào thực tế

Lý thuyết là vậy, nhưng ứng dụng vào thực tế mới là điều quan trọng nhất. Dưới đây là 3 trường hợp sử dụng iframe phổ biến nhất mà bạn chắc chắn sẽ cần đến.

Cách nhúng video YouTube vào website bằng iframe

Đây là ứng dụng phổ biến nhất của iframe. YouTube đã làm cho việc này trở nên cực kỳ đơn giản.

  1. Mở video YouTube bạn muốn nhúng.
  2. Bên dưới video, nhấn vào nút Chia sẻ (Share).
  3. Chọn tùy chọn Nhúng (Embed).
  4. YouTube sẽ cung cấp cho bạn một đoạn mã iframe đã được cấu hình sẵn. Bạn chỉ cần sao chép và dán vào HTML của mình.

Đoạn mã sẽ trông giống như thế này:

<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Cách nhúng Google Maps vào trang liên hệ

Tương tự như YouTube, việc nhúng bản đồ cũng rất trực quan:

  1. Truy cập Google Maps và tìm địa điểm bạn muốn.
  2. Nhấn vào nút Chia sẻ (Share).
  3. Chuyển sang tab Nhúng bản đồ (Embed a map).
  4. Sao chép đoạn mã HTML được cung cấp và dán vào trang web của bạn.
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!..." width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>

Cách nhúng một trang web khác vào trang hiện tại

Đây là trường hợp cơ bản nhất. Bạn chỉ cần sử dụng thẻ iframe với thuộc tính src trỏ đến trang web bạn muốn nhúng.

<iframe src="https://vi.wikipedia.org/wiki/HTML5" width="100%" height="500"></iframe>

Một lưu ý quan trọng: Không phải trang web nào cũng cho phép bạn nhúng họ. Nhiều trang web lớn (như Google, Facebook) sử dụng một tiêu đề HTTP gọi là X-Frame-Options để ngăn chặn việc bị nhúng vào iframe trên trang khác nhằm mục đích bảo mật.

Hướng dẫn ứng dụng iframe vào thực tế: Ví dụ chi tiết
Hướng dẫn ứng dụng iframe vào thực tế: Ví dụ chi tiết

Kỹ thuật tạo Iframe Responsive

Một iframe có kích thước cố định sẽ trông rất tệ trên các thiết bị di động. Vì vậy, việc làm cho iframe co giãn theo kích thước màn hình, hay còn gọi là iframe responsive, là một kỹ năng bắt buộc.

Tại sao iframe responsive lại quan trọng?

Ngày nay, phần lớn lưu lượng truy cập website đến từ điện thoại di động. Một iframe với widthheight cố định sẽ bị vỡ layout, tràn ra ngoài màn hình hoặc quá nhỏ để xem. Điều này tạo ra trải nghiệm người dùng rất tồi tệ. Iframe responsive đảm bảo nội dung nhúng của bạn luôn hiển thị đẹp và vừa vặn trên mọi kích cỡ màn hình, từ máy tính để bàn đến điện thoại thông minh.

Hướng dẫn làm iframe responsive bằng CSS

Chúng ta không thể chỉ đơn giản đặt width: 100%height: auto cho iframe vì nó sẽ không giữ được tỷ lệ khung hình (ví dụ: 16:9 cho video). Cách tốt nhất là sử dụng một “thủ thuật” với CSS. Bạn sẽ bọc iframe trong một thẻ div và áp dụng CSS cho cả hai.

Bước 1: Bọc iframe trong một thẻ div

<div class="iframe-container">
  <iframe src="https://www.youtube.com/embed/VIDEO_ID" frameborder="0" allowfullscreen></iframe>
</div>

Bước 2: Thêm CSS

Đoạn mã CSS này sẽ tạo ra một container duy trì tỷ lệ khung hình 16:9 và làm cho iframe bên trong lấp đầy container đó.

.iframe-container {
  position: relative;
  overflow: hidden;
  width: 100%;
  padding-top: 56.25%; /* Tỷ lệ 16:9 (9 / 16 = 0.5625) */
}

.iframe-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  width: 100%;
  height: 100%;
}

Cách này cực kỳ hiệu quả và là tiêu chuẩn vàng để tạo iframe responsive. Bạn có thể thay đổi giá trị padding-top để phù hợp với các tỷ lệ khác (ví dụ: 75% cho tỷ lệ 4:3).

Kỹ thuật nâng cao: Tạo Iframe Responsive (Tương thích mọi thiết bị)
Kỹ thuật nâng cao: Tạo Iframe Responsive (Tương thích mọi thiết bị)

Phân tích ưu và nhược điểm khi sử dụng iframe

Thẻ iframe rất hữu ích nhưng không phải là một giải pháp hoàn hảo cho mọi trường hợp. Việc sử dụng nó cũng đi kèm một số ưu và nhược điểm mà bạn cần cân nhắc kỹ lưỡng.

Ưu điểm

  • Tích hợp dễ dàng: Đây là ưu điểm lớn nhất. Bạn có thể nhanh chóng hiển thị nội dung từ các dịch vụ khác (YouTube, Google Maps, Facebook) mà không cần các API phức tạp.
  • Nội dung độc lập: Nội dung trong iframe được tải độc lập. Nếu nội dung đó gặp lỗi hoặc tải chậm, nó sẽ không làm “sập” toàn bộ trang web của bạn.
  • Vượt qua giới hạn kỹ thuật: Hữu ích khi bạn muốn hiển thị nội dung từ một trang web sử dụng công nghệ khác với trang của bạn.

Nhược điểm

Câu trả lời là , nếu bạn không sử dụng cẩn thận.

  • Về SEO: Mặc dù các công cụ tìm kiếm hiện đại như Google đã thông minh hơn trong việc đọc nội dung iframe, chúng vẫn xem nội dung đó thuộc về tên miền gốc (nguồn src). Vì vậy, nội dung trong iframe ít đóng góp vào việc xếp hạng SEO cho trang của bạn. Lạm dụng iframe cho các nội dung quan trọng có thể làm loãng “sức mạnh” SEO của trang.
  • Về tốc độ tải trang: Mỗi iframe hoạt động như một trang web nhỏ được tải bên trong trang mẹ. Điều này có nghĩa là trình duyệt phải thực hiện thêm các yêu cầu HTTP, làm tăng thời gian tải trang tổng thể. Để khắc phục, bạn nên sử dụng thuộc tính loading="lazy".
  • Vấn đề bảo mật: Đây là nhược điểm lớn nhất và sẽ được nói rõ hơn ở phần tiếp theo.
Phân tích ưu và nhược điểm khi sử dụng iframe
Phân tích ưu và nhược điểm khi sử dụng iframe

Vấn đề bảo mật với Iframe và thuộc tính sandbox

Khi bạn nhúng nội dung từ một nguồn không đáng tin cậy, bạn đang mở ra một cánh cửa cho các rủi ro bảo mật tiềm ẩn. Rất may, HTML5 đã cung cấp một công cụ mạnh mẽ để giải quyết vấn đề này, đó là thuộc tính sandbox.

Những rủi ro bảo mật tiềm ẩn khi dùng iframe

Nếu trang web được nhúng vào iframe chứa mã độc, nó có thể cố gắng thực hiện các hành vi nguy hiểm, chẳng hạn như:

  • Chạy các tập lệnh (script): Có thể tự động chuyển hướng người dùng sang một trang lừa đảo.
  • Hiển thị cửa sổ pop-up: Gây phiền toái cho người dùng.
  • Gửi biểu mẫu (form): Đánh cắp thông tin người dùng.
  • Clickjacking: Lừa người dùng nhấp vào một thứ gì đó mà họ không hề hay biết.

Cách thuộc tính sandbox giúp tăng cường bảo mật cho iframe

Thuộc tính sandbox hoạt động như một “hộp cát” an toàn. Khi bạn thêm thuộc tính này vào thẻ iframe, nó sẽ áp đặt một loạt các hạn chế nghiêm ngặt lên nội dung được nhúng, vô hiệu hóa các tính năng có khả năng gây hại như script, form, pop-up…

<iframe src="nguon_khong_tin_cay.html" sandbox></iframe>

Tuy nhiên, đôi khi bạn muốn cho phép một vài tính năng nhất định. Bạn có thể nới lỏng các hạn chế bằng cách thêm các giá trị vào thuộc tính sandbox:

  • sandbox="allow-forms": Cho phép nội dung bên trong iframe gửi biểu mẫu.
  • sandbox="allow-scripts": Cho phép chạy JavaScript.
  • sandbox="allow-same-origin": Cho phép nội dung truy cập tài nguyên từ cùng một nguồn gốc.
  • sandbox="allow-popups": Cho phép mở các cửa sổ pop-up.

Sử dụng sandbox là một thực hành bảo mật cực kỳ tốt khi bạn phải làm việc với các nguồn nội dung của bên thứ ba.

Vấn đề bảo mật với Iframe và thuộc tính `sandbox`
Vấn đề bảo mật với Iframe và thuộc tính `sandbox`

Lời kết

Qua bài viết này, WiWeb hy vọng bạn đã có một cái nhìn toàn diện về thẻ iframe trong HTML. Nó là một công cụ cực kỳ mạnh mẽ để tích hợp nội dung đa phương tiện vào website, nhưng hãy luôn nhớ sử dụng một cách khôn ngoan.

Lời khuyên từ chúng tôi:

  • Ưu tiên nội dung gốc: Chỉ dùng iframe khi thực sự cần thiết để nhúng nội dung từ bên thứ ba.
  • Luôn tạo responsive: Đảm bảo trải nghiệm người dùng tốt nhất trên mọi thiết bị.
  • Cẩn trọng với bảo mật: Luôn sử dụng thuộc tính sandbox khi nhúng nội dung từ nguồn mà bạn không hoàn toàn tin tưởng.
  • Tối ưu tốc độ: Đừng quên thuộc tính loading="lazy" để cải thiện thời gian tải trang.

Bạn có gặp khó khăn nào khi làm việc với thẻ iframe không? Hãy chia sẻ với WiWeb ở phần bình luận nhé!

Nếu bạn đang tìm kiếm một đơn vị thiết kế website chuyên nghiệp, an toàn và tối ưu SEO, đừng ngần ngại liên hệ với WiWeb. Chúng tôi luôn sẵn sàng đồng hành cùng bạn.

5/5 - (114 Đánh giá)
Bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *