Landing Page Judi Modern: Container Query, Popover API, dan Cuma 8 Baris JavaScript
Landing page judi itu tugasnya cuma satu: bikin orang klik tombol daftar. Tapi banyak LP justru membebani HP pengunjung dengan framework 100 KB yang harus selesai di-download dulu sebelum tombolnya bisa diklik. Hari ini kami bikin varian LP SLOT161 pakai panduan Modern Web Guidance dari Chrome โ hasilnya logika UI nol JavaScript, dan total JS di halaman cuma 8 baris polyfill. Ini catatan lengkapnya, termasuk empat jebakan yang kami kena.
Kenapa kami tinggalkan cara “framework dulu”
Untuk LP satu halaman, React/Vue bukan cuma berlebihan โ dia menambah waktu tunggu tepat di detik paling mahal. Browser sekarang sudah punya fitur bawaan yang dulu wajib ditulis manual pakai JS: popover, dialog, animasi masuk, sampai komponen yang menyesuaikan diri ke lebar wadahnya. Kalau bisa deklaratif di HTML/CSS, kenapa harus lewat runtime?
Hasil eksperimen: slot161_modern.html, 20 KB total, satu file, tanpa dependency runtime.
Enam fitur platform yang benar-benar dipakai
| Fitur | Dipakai untuk | Efek nyata |
|---|---|---|
Container Query (@container + container-type) |
kartu bonus + tabel pembayaran | Komponen adaptif ke lebar dirinya, bukan lebar layar โ bisa dipindah ke sidebar/main tanpa nulis media query baru |
Popover API + Invoker Commands (commandfor/command) |
popup bonus | Nol baris JS; browser yang urus fokus, tombol Esc, dan top-layer |
@starting-style |
animasi masuk elemen | Animasi saat elemen pertama dirender, tanpa JS/Animation API |
scrollbar-color/scrollbar-width |
scrollbar | Scrollbar ikut tema brand lewat CSS variable |
text-wrap: balance/pretty + :has() |
judul & FAQ | Judul tak ada baris menggantung; parent FAQ di-style tanpa JS |
Angka nyata di file itu: atribut popover muncul 22ร, commandfor 6ร, @starting-style
5ร, @container 3ร, text-wrap 4ร, :has() 3ร, scrollbar-color 2ร.
Satu catatan jujur: fetchpriority sudah masuk daftar siap pakai, tapi belum dipakai di varian
ini karena tidak ada gambar hero. Kalau nanti ada gambar LCP, jangan pasang loading="lazy" di
situ โ itu justru menunda gambar terpenting.
Isi 8 baris JavaScript-nya apa?
Bukan logika UI. Isinya cuma polyfill kondisional:
if (!('commandForElement' in HTMLButtonElement.prototype)) {
import('https://esm.run/invokers-polyfill').catch(()=>{});
}
if (!('popover' in HTMLElement.prototype)) {
import('https://unpkg.com/@oddbird/popover-polyfill@latest/dist/popover.min.js').catch(()=>{});
}
Sembilan dari sepuluh pengunjung tidak pernah men-download dua file itu, karena browser mereka sudah mendukung. MDN mencatat Invoker Commands API sebagai Baseline 2025 โ newly available sejak Desember 2025 (MDN), dan InfoQ melaporkan dukungannya sudah merata di browser utama pada Januari 2026. Sementara panduan Modern Web Guidance sendiri masih berlabel early preview โ jadi polyfill tetap dipasang sebagai jaring pengaman, tapi jangan pernah dimuat tanpa syarat.
Jebakan halusnya di CSS: style pembuka popover wajib ditulis :is(:popover-open, .\:popover-open).
Kalau hanya :popover-open, browser tanpa dukungan membuang seluruh rule itu โ bukan cuma
bagian yang tak dikenal.
Empat jebakan yang kami kena
- Container Query tanpa
container-type. Kalaucontainer-type: inline-sizelupa dipasang di elemen induk,@containertidak pernah match dan halaman terlihat “tidak responsif” โ padahal CSS-nya sudah benar. Salah di induk, bukan di query-nya. - Tabel pembayaran terpotong di HP.
min-width:560pxmemaksa scroll horizontal, dan sticky bottom bar menutupi baris berikutnya. Solusinya bukan JS: di bawah 480px tabel berubah jadi daftar kartu lewat container query, dengan label per-sel daritd::before{content:attr(data-label)}. Nol scroll horizontal, nol JS. - Kontras teks isi terlalu rendah.
--muted:#9b9486di atas latar#08090ckelihatan elegan di laptop, tapi susah dibaca di HP. Dinaikkan ke#c4bdae. Pelajaran: “kelihatan keren” bukan “kebaca”. - Screenshot sebagai bukti itu menipu. Render satu gambar super-tinggi (
--window-size=430,3600) bikin resolusi turun sampai teks tak terbaca, dan layout tampak “rusak” padahal tidak. Yang benar: render per viewport โ 430ร860 dan 430ร1900,--force-device-scale-factor=2. Masalahnya kualitas bukti, bukan layout.
Yang kami bawa ke LP produksi
Total 20 KB, logika UI tanpa JS, dan semua warna/tema lewat CSS variable โ ganti brand tinggal ganti variabel. Dua hal yang tetap berlaku untuk LP judi: struktur wajib punya versi AMP (lihat panduan AMP LP judi) dan audit teknis SEO sebelum dipakai (audit LP judi).
Dan satu aturan kerja yang tidak boleh dilanggar: LP baru selalu preview dulu, jangan langsung menimpa halaman yang sedang jalan. Teknik modern di atas memang menghemat JavaScript โ tapi halaman judi yang salah tayang lebih mahal daripada 20 KB file.
Kalau kamu juga bangun LP, mana yang sudah kamu pakai: popover deklaratif, container query, atau masih pakai library modal? Ceritakan di komentar.
โ Chokdi ๐ท ยท Content Studio ยท 2026