
- 1Frame: Dua Pendekatan yang Berbeda
- 2FrameSet: Membagi Layar Menjadi Panel
- 2.1Membuat Navigasi dengan Frameset
- 2.2FrameSet Vertikal (Rows)
- 3IFrame: Menanam Halaman di Dalam Konten
- 4Kerangka Frameset Lengkap: Studi Kasus Dashboard
- 5IFrame dalam Pengembangan Web Modern
- 5.1Menyematkan Video
- 5.2Menampilkan Peta
- 5.3Form Pembayaran
- 5.4Social Media Feed
- 6Atribut IFrame Penting yang Perlu Diketahui
- 7Frameset vs CSS Modern: Mengapa Perlu Dipahami?
- 8Best Practices dan Catatan Keamanan
- 9Rangkuman
- 10Hal yang sering ditanyakan seputar Frame HTML
- 10.1Apa fungsi frame dalam pengembangan web?
- 10.2Apakah frame masih direkomendasikan untuk website modern?
- 10.3Apa kelemahan utama penggunaan frameset di website?
Bekerja dengan frame dalam HTML membuka peluang untuk menggabungkan berbagai sumber konten dalam satu halaman web. Dua pendekatan utama yang tersedia adalah frameset dan iframe — masing-masing dengan kegunaan, kelebihan, dan keterbatasan yang berbeda. Memahami cara kerja keduanya akan memberi Anda fleksibilitas lebih saat membangun tata letak halaman, terutama untuk proyek-proyek yang membutuhkan tampilan multi-panel atau integrasi konten dari sumber eksternal.
Pada dasarnya, frame memungkinkan sebuah browser menampilkan beberapa dokumen HTML secara bersamaan dalam satu jendela. Alih-alih hanya satu halaman penuh, Anda bisa membagi layar menjadi beberapa bagian, di mana setiap bagian menampilkan halaman HTML yang berbeda. Konsep ini sangat mirip dengan membagi layar monitor menjadi beberapa jendela kecil, masing-masing dengan konten dan fungsi tersendiri.
Frame: Dua Pendekatan yang Berbeda
Sebelum mempelajari teknis masing-masing, penting untuk memahami perbedaan fundamental antara frameset dan iframe. Keduanya menggunakan tag frame, tetapi cara kerja dan tujuan penggunaannya sangat berbeda.
Frameset digunakan untuk membagi seluruh area tampilan browser menjadi beberapa panel. Ketika Anda menggunakan frameset, tidak ada body tag dalam dokumen utama — seluruh area halaman dialokasikan untuk menampilkan frame-frame yang didefinisikan. Ini seperti membagi layar menjadi grid, di mana setiap sel berisi halaman HTML yang berbeda.
Sebaliknya, iframe bekerja seperti sebuah “jendela kecil” yang ditanam di dalam konten halaman utama. Halaman utama tetap memiliki struktur HTML lengkap dengan head dan body, dan iframe hanya menempati sebagian kecil area halaman. Ini memungkinkan Anda menyisipkan konten dari halaman lain tanpa mengorbankan struktur halaman utama.
FrameSet: Membagi Layar Menjadi Panel
Frameset adalah pendekatan lama yang membagi seluruh viewport browser menjadi beberapa area. Mari kita mulai dengan contoh paling sederhana — membagi halaman menjadi dua kolom:
<!DOCTYPE html>
<html>
<head>
<title>Layout Dua Kolom</title>
</head>
<frameset cols="25%, 75%">
<frame src="navigasi.html" />
<frame src="konten.html" />
</frameset>
</html>
Dalam contoh ini, atribut cols=”25%, 75%” membagi layar menjadi dua kolom. Kolom kiri menempati 25% lebar browser dan menampilkan file navigasi.html, sedangkan kolom kanan menempati 75% dan menampilkan konten.html. Proporsi ini bisa disesuaikan sesuai kebutuhan — Anda bisa menggunakan pixel tetap seperti cols=”300, *” atau kombinasi keduanya.
Membuat Navigasi dengan Frameset
Mari kita buat contoh yang lebih lengkap dengan navigasi yang fungsional. Kita akan membuat halaman dengan tiga area: header, navigasi kiri, dan konten utama.
Pertama, buat file utama bernama index.html:
<!DOCTYPE html>
<html>
<head>
<title>Portal Tutorial</title>
</head>
<frameset rows="80, *">
<frame src="header.html" name="header" noresize="noresize" />
<frameset cols="200, *">
<frame src="nav.html" name="navigasi" />
<frame src="beranda.html" name="konten" />
</frameset>
</frameset>
</html>
Perhatikan bahwa frameset bisa bersarang — frameset luar membagi area menjadi baris (rows), dan di dalam baris kedua terdapat frameset lain yang membagi area menjadi kolom. Atribut name sangat penting karena menjadi target tautan navigasi. Ketika pengguna mengklik link di navigasi, target konten bisa diarahkan ke frame tertentu menggunakan atribut target pada tag a.
Sekarang buat file header.html sederhana:
<!DOCTYPE html>
<html>
<head>
<style>
body { margin: 0; padding: 15px 20px; background: #2c3e50; color: white; font-family: Arial; }
h1 { margin: 0; font-size: 1.5em; }
</style>
</head>
<body>
<h1>Portal Tutorial Pemrograman</h1>
</body>
</html>
Dan file nav.html untuk navigasi:
<!DOCTYPE html>
<html>
<head>
<style>
body { margin: 0; padding: 10px; font-family: Arial; background: #ecf0f1; }
a { display: block; padding: 8px 12px; margin: 4px 0; background: #3498db;
color: white; text-decoration: none; border-radius: 3px; }
a:hover { background: #2980b9; }
</style>
</head>
<body>
<a href="php-dasar.html" target="konten">PHP Dasar</a>
<a href="html-tutorial.html" target="konten">HTML Tutorial</a>
<a href="css-layout.html" target="konten">CSS Layout</a>
<a href="javascript.html" target="konten">JavaScript</a>
</body>
</html>
Atribut target=”konten” pada setiap tautan mengarahkan browser untuk membuka halaman di frame bernama “konten” — yaitu area kanan yang sudah didefinisikan di index.html. Ini menciptakan navigasi sidebar yang tetap di tempat sementara konten utama berganti saat pengguna memilih topik.
FrameSet Vertikal (Rows)
Selain membagi kolom, Anda juga bisa membagi halaman secara horizontal menggunakan atribut rows:
<frameset rows="100, *, 50">
<frame src="header.html" noresize="noresize" />
<frame src="konten.html" />
<frame src="footer.html" noresize="noresize" />
</frameset>
Atribut * (bintang) berarti “ambil sisa ruang yang tersedia”. Dalam contoh ini, header mendapat 100 pixel tetap, footer mendapat 50 pixel, dan konten utama mengisi seluruh area di antara keduanya. Perpaduan frameset rows dan cols memungkinkan Anda membuat layout kompleks seperti dashboard admin, portal berita, atau panel kontrol.
IFrame: Menanam Halaman di Dalam Konten
IFrame bekerja dengan prinsip yang berbeda dari frameset. Alih-alih mengambil alih seluruh area browser, iframe hanya menempati sebagian kecil area dalam halaman utama. Ini menjadikannya lebih fleksibel dan lebih sering digunakan dalam pengembangan web modern.
Berikut contoh penggunaan iframe paling dasar:
<!DOCTYPE html>
<html>
<head>
<title>Contoh IFrame</title>
<style>
body { font-family: Arial; padding: 20px; }.video-container { margin: 20px 0; }
iframe { border: 2px solid #ddd; border-radius: 8px; }
</style>
</head>
<body>
<h1>Tutorial Embed Video YouTube</h1>
<p>Berikut adalah video tutorial HTML yang bisa Anda tonton langsung:</p>
<div class="video-container">
<iframe width="560" height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="Tutorial HTML"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media"
allowfullscreen>
</iframe>
</div>
<p>Setelah menonton, lanjutkan ke materi berikutnya di bawah.</p>
</body>
</html>
Keunggulan utama iframe adalah kemampuan menampilkan konten dari domain berbeda tanpa harus meninggalkan halaman saat ini. Ini sangat berguna untuk menyematkan video, peta interaktif, dokumen, atau widget dari layanan pihak ketiga seperti Google Maps, PDF viewer, atau form pihak ketiga.
Kerangka Frameset Lengkap: Studi Kasus Dashboard
Mari kita coba membangun sesuatu yang lebih nyata — dashboard admin sederhana dengan header, sidebar navigasi, area konten utama, dan footer status bar. Meskipun ini bisa dibangun dengan CSS modern, memahami pendekatan frameset membantu Anda memahami evolusi tata letak web.
File utama dashboard.html:
<!DOCTYPE html>
<html>
<head>
<title>Admin Dashboard</title>
</head>
<frameset rows="60, *, 30">
<frame src="dash-header.html" name="header" noresize="noresize" />
<frameset cols="220, *">
<frame src="dash-nav.html" name="sidebar" />
<frame src="dash-content.html" name="main" />
</frameset>
<frame src="dash-footer.html" name="footer" noresize="noresize" />
</frameset>
</html>
Setiap file frame berisi halaman HTML mandiri dengan styling masing-masing. File dash-header.html bisa menampilkan nama aplikasi dan tombol logout, dash-nav.html berisi menu navigasi, dash-content.html menampilkan data utama, dan dash-footer.html menampilkan informasi status seperti versi aplikasi dan waktu server.
Untuk interaksi antar-frame, JavaScript menyediakan method contentWindow dan contentDocument yang memungkinkan frame induk berkomunikasi dengan frame anak. Contohnya, tombol di sidebar bisa mengganti konten di frame utama:
<a href="laporan.html" target="main">Laporan</a>
<a href="pengaturan.html" target="main">Pengaturan</a>
<a href="statistik.html" target="main">Statistik</a>
Setiap tautan di sidebar akan memuat halaman baru di area konten utama tanpa me-reload seluruh halaman. Inilah salah satu keunggulan frameset — navigasi antar-section tidak membutuhkan reload penuh, sehingga pengalaman pengguna terasa lebih cepat dan responsif.
IFrame dalam Pengembangan Web Modern
Meskipun frameset sudah dianggap usang, iframe tetap relevan dan banyak digunakan. Berikut beberapa kasus penggunaan iframe yang masih umum ditemui di web modern:
Menyematkan Video
Platform seperti YouTube dan Vimeo menyediakan kode iframe untuk menyematkan video. Ini adalah cara paling umum menampilkan video di halaman web tanpa harus menghosting file video sendiri.
Menampilkan Peta
Google Maps dan layanan peta lainnya menyediakan iframe widget. Anda bisa menampilkan peta lokasi bisnis tanpa mengintegrasikan API peta secara manual — cukup salin kode iframe yang disediakan dan tempel di halaman Anda.
Form Pembayaran
Payment gateway seperti Midtrans dan Xendit sering menyediakan halaman pembayaran dalam iframe. Ini memungkinkan proses pembayaran berlangsung di dalam halaman toko tanpa redirect ke halaman eksternal, menciptakan pengalaman checkout yang lebih mulus.
Social Media Feed
Embed tweet, Instagram post, atau Facebook page bisa dilakukan menggunakan iframe. Meskipun performanya tidak sebaik API-based integration, iframe adalah opsi tercepat untuk menampilkan konten media sosial.
Atribut IFrame Penting yang Perlu Diketahui
IFrame memiliki beberapa atribut yang mempengaruhi perilaku dan keamanannya:
<iframe
src="https://contoh.com/widget"
width="100%"
height="400"
title="Deskripsi konten untuk accessibility"
frameborder="0"
loading="lazy"
referrerpolicy="no-referrer"
sandbox="allow-scripts allow-same-origin"
></iframe>
Atribut sandbox adalah fitur keamanan penting. Dengan sandbox, Anda membatasi kemampuan konten iframe — misalnya, mencegahnya menjalankan JavaScript, mengakses storage, atau melakukan navigasi. Ini sangat penting saat menampilkan konten dari sumber yang tidak Anda kendalikan. loading=”lazy” membantu performa dengan menunda pemuatan iframe sampai elemen tersebut hampir terlihat di viewport pengguna.
Atribut title juga sering diabaikan tetapi sangat penting untuk aksesibilitas. Screen reader membaca title iframe untuk memberi tahu pengguna tunanetra tentang konten yang tersimpan di dalamnya. Tanpa title, pengguna assistive technology tidak akan tahu isi iframe tersebut.
Frameset vs CSS Modern: Mengapa Perlu Dipahami?
Pertanyaan yang mungkin terlintas: mengapa harus mempelajari frameset jika CSS Flexbox dan Grid sudah menggantikannya? Ada beberapa alasan kuat:
Pertama, memahami frameset membantu Anda mengapresiasi evolusi tata letak web. CSS modern terinspirasi dari tantangan yang dihadapi oleh pendekatan frame — memecah area layar menjadi beberapa bagian yang bisa dikontrol secara independen. Dengan memahami masalah yang diselesaikan oleh frame, Anda akan lebih menghargai solusi yang ditawarkan oleh Flexbox dan Grid.
Kedua, masih ada sistem legacy yang menggunakan frameset. Beberapa aplikasi internal perusahaan, portal pemerintah, atau sistem yang dibangun puluhan tahun lalu mungkin masih menggunakan frameset. Kemampuan memaintenance dan memahami kode seperti ini tetap bernilai di dunia kerja.
Ketiga, pemahaman tentang frame membantu Anda membuat keputusan arsitektur yang lebih baik. Mengetahui kapan menggunakan iframe (untuk konten eksternal terisolasi) vs flexbox (untuk layout internal) adalah keterampilan yang membedakan developer yang sekadar mengikuti tren dengan yang benar-benar memahami alasan di balik setiap pendekatan.
Best Practices dan Catatan Keamanan
Jika Anda menggunakan iframe dalam proyek, perhatikan beberapa praktik terbaik berikut:
- Gunakan sandbox secara default — Hanya berikan izin yang benar-benar diperlukan. Jangan gunakan allow-same-origin bersama allow-scripts kecuali Anda benar-benar memahami risikonya
- Selalu tentukan atribut title — Untuk aksesibilitas dan SEO. Meskipun konten iframe tidak langsung diindeks oleh search engine, title membantu screen reader
- Gunakan loading=”lazy” — Untuk iframe yang berada di bawah fold. Ini menghemat bandwidth dan mempercepat initial page load
- Pertimbangkan alternatif server-side — Jika Anda mengontrol konten yang ditampilkan, pertimbangkan untuk mem-fetch konten di server dan menyajikannya langsung. Ini lebih cepat dan tidak memiliki masalah cross-origin
- Hindari frameset untuk proyek baru — Gunakan CSS Flexbox atau Grid sebagai pengganti. Frameset sudah deprecated dan tidak didukung oleh standar HTML5
Rangkuman
Bekerja dengan frame dalam HTML memberikan kemampuan untuk menggabungkan berbagai sumber konten dalam satu tampilan. Frameset membagi seluruh area browser menjadi panel-panel independen — cocok untuk dashboard dan portal, meskipun sudah tidak direkomendasikan untuk proyek baru. IFrame memungkinkan penyematan konten dari sumber eksternal dalam halaman utama, dan masih sangat relevan untuk menyematkan video, peta, form pembayaran, dan widget. Memahami kedua pendekatan ini, termasuk atribut keamanan seperti sandbox dan best practices penggunaannya, akan membuat Anda lebih percaya diri dalam menghadapi berbagai tantangan tata letak web yang Anda temui di lapangan.
Hal yang sering ditanyakan seputar Frame HTML
Apa fungsi frame dalam pengembangan web?
Frame memungkinkan halaman web dibagi menjadi beberapa bagian independen yang masing-masing dapat memuat dokumen HTML terpisah dalam satu jendela browser.
Apakah frame masih direkomendasikan untuk website modern?
Tidak, tag frame dan frameset sudah usang (deprecated) dan digantikan oleh iframe, CSS grid, atau komponen framework modern yang lebih aman dan responsif.
Apa kelemahan utama penggunaan frameset di website?
Frame menyulitkan SEO karena mesin pencari kesulitan mengindeks konten terpisah, merusak pengalaman bookmark, dan menimbulkan masalah navigasi bagi pengguna.
Memuat komentar…