VS Code & Emmet Shortcuts Wajib
Ngebut koding 10x lebih cepat dengan shortcut & trik ekspres ini.
Copy & paste baris aktif langsung ke bawah tanpa blok teks terlebih dahulu.
Pilih kata yang sama satu per satu untuk edit sekaligus di banyak tempat (Multi-cursor).
Pindahkan baris/blok kode ke atas atau bawah tanpa perlu cut & paste.
Jadikan baris/blok teks sebagai komentar atau sebaliknya dengan cepat.
Hapus seluruh baris posisi kursor tanpa perlu memblok teks dari awal.
div.card>img+h3+p+button
Tekan Tab untuk menghasilkan struktur Card komplit seketika.
ul.nav-menu>li*5>a[href="#"]
Membuat list tag `ul` berisi 5 `li` dan tag `a` secara otomatis.
lorem20
Tekan Tab untuk generate 20 kata teks contoh instan untuk dummy layout.
Merapihkan seluruh indentasi dan spasifikasi kode HTML/CSS/JS secara otomatis.
Starter Code Snippets (Tinggal Copas)
Kumpulan fondasi kodelanding page penting yang sering kepake.
<!DOCTYPE html>
<html lang="id" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Landing Page Saya</title>
<!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font Awesome Icons CDN -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<!-- Google Font (Inter) -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body class="bg-slate-900 text-slate-100 font-['Inter'] antialiased min-h-screen">
<!-- Konten Landing Page Disini -->
<h1 class="text-3xl font-bold text-center py-10">Hello World!</h1>
<script src="script.js"></script>
</body>
</html>
/* CSS Reset dasar */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--bg-main: #0a0f1d;
--bg-card: #1e293b;
--primary: #06b6d4;
--text-main: #f8fafc;
--text-muted: #94a3b8;
}
body {
background-color: var(--bg-main);
color: var(--text-main);
line-height: 1.6;
}
/* Biar Gambar Tidak Lewat / Break Layout */
img, video {
max-width: 100%;
height: auto;
display: block;
}
<!-- Grid Container: 1 kolom di HP, 2 di Tablet, 3 di Desktop -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 p-6">
<!-- Card Item -->
<div class="bg-slate-800/80 border border-slate-700 rounded-xl overflow-hidden hover:border-cyan-500/50 transition-all shadow-lg">
<img src="https://images.unsplash.com/photo-1555066931-4365d14bab8c?w=600&auto=format&fit=crop" alt="Card Cover" class="w-full h-48 object-cover">
<div class="p-5 space-y-3">
<span class="text-xs font-semibold px-2.5 py-1 bg-cyan-950 text-cyan-400 rounded-full border border-cyan-800">Kategori</span>
<h3 class="text-xl font-bold text-white">Judul Produk / Layanan</h3>
<p class="text-slate-400 text-sm">Deskripsi singkat menarik tentang penawaran kamu di landing page ini.</p>
<button class="w-full py-2.5 bg-cyan-500 hover:bg-cyan-400 text-slate-950 font-bold text-sm rounded-lg transition">Beli Sekarang</button>
</div>
</div>
</div>
<!-- Hero Section dengan Background Video & Dark Overlay -->
<div class="relative w-full h-[500px] flex items-center justify-center overflow-hidden">
<!-- Video Elements (autoplay muted loop) -->
<video autoplay muted loop class="absolute w-full h-full object-cover z-0">
<source src="assets/videos/hero-bg.mp4" type="video/mp4">
</video>
<!-- Dark Overlay Biar Teks Tetap Kelihatan Terang -->
<div class="absolute inset-0 bg-black/60 z-10"></div>
<!-- Teks Konten Utama (z-20 agar di atas video) -->
<div class="relative z-20 text-center px-4 max-w-2xl">
<h1 class="text-4xl font-extrabold text-white mb-3">Pengalaman visual Luar Biasa</h1>
<p class="text-slate-200 mb-6">Solusi modern untuk memukau pengunjung dalam detik pertama.</p>
<a href="#cta" class="px-6 py-3 bg-cyan-500 text-black font-bold rounded-lg shadow-lg hover:bg-cyan-400 transition">Pelajari Selengkapnya</a>
</div>
</div>
// Konfigurasi JSONBin.io
const BIN_ID = 'GANTI_DENGAN_BIN_ID_KAMU';
const MASTER_KEY = 'GANTI_DENGAN_MASTER_KEY_KAMU';
const API_URL = `https://api.jsonbin.io/v3/b/${BIN_ID}`;
// 1. Fungsi Ambil Data (GET)
async function getCloudData() {
try {
const response = await fetch(`${API_URL}/latest`, {
method: 'GET',
headers: { 'X-Master-Key': MASTER_KEY }
});
const result = await response.json();
console.log("Data Berhasil Diambil:", result.record);
return result.record;
} catch (error) {
console.error("Gagal mengambil data:", error);
}
}
// 2. Fungsi Simpan / Update Data (PUT)
async function updateCloudData(newDataObject) {
try {
const response = await fetch(API_URL, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-Master-Key': MASTER_KEY
},
body: JSON.stringify(newDataObject)
});
const result = await response.json();
alert("Data Berhasil Disimpan ke Cloud!");
} catch (error) {
console.error("Gagal update data:", error);
}
}
// script.js - Mobile Menu Toggle Simple
const btnMenu = document.getElementById('btn-menu');
const mobileMenu = document.getElementById('mobile-menu');
btnMenu.addEventListener('click', () => {
// Toggle class 'hidden' pada div menu HP
mobileMenu.classList.toggle('hidden');
});
Interactive Live Code Playground
Uji coba kode landing page kamu langsung di browser secara real-time!
Kamus Istilah Web Dev (Analogis & Bahasa Gaul)
Gak perlu pusing sama bahasa planet, ini arti sederhananya.
API
Kurir DataIbarat Pelayan Restoran. Kamu (Frontend) pesan makanan ke pelayan (API), lalu pelayan ambil pesanan ke Dapur (Backend/Database) dan anter balik ke mejamu.
DOM (Document Object Model)
Pohon HTMLStruktur pohon elemen web yang bisa ditarik, diubah warna, atau disembunyiin sama JavaScript secara *live* saat pengguna ngeklik tombol.
Path (Relative vs Absolute)
Alamat File
Relative (`./assets/pic.jpg`): Patokan dari folder tempat kamu berdiri.
Absolute (`https://site.com/pic.jpg`): Patokan URL lengkap dari luar.
Fetch()
Perintah Ambil DataFungsi JavaScript untuk memanggil URL API buat ngambil atau ngirim data dari/ke internet tanpa perlu reload halaman web.
Deploy / Hosting
Terbit OnlineProses mengupload file web dari laptop kamu ke server internet biar bisa dibuka oleh orang di seluruh dunia pakai link URL khusus.
JSON
Format Paket Data
Format standar bertukar teks data antar aplikasi yang rapih bentuknya kunci-nilai, misal: {"nama": "Fiq", "role": "Dev"}.
Workflow Eksekusi: Dari Folder Kosong Sampai Online
Ikuti 4 langkah terstruktur ini agar proyek landing page kamu rapih & berhasil.
Struktur Folder
Buat folder utama proyek di laptop. Rapihkan aset agar tidak berantakan.
Setup Layout & CSS
Pasang boilerplate HTML5, panggil Tailwind CDN, buat Navbar, Hero Section, & Grid Cards.
- Gunakan Flexbox untuk Navbar.
- Gunakan Grid untuk kartu produk.
- Pastikan responsive di ukuran HP.
Konekkan JSONBin
Biar data landing page kamu (harga/produk/testimoni) tidak statis keras.
- Daftar akun gratis di JSONBin.io
- Buat Bin Baru berisi array JSON.
- Fetch data lewat
script.js.
Deploy Online Gratis
Upload web kamu ke internet tanpa bayar sepeserpun!
Tes Kemampuan Web Dev Kamu
Uji ingatan mengenai penulisan path file, CSS, dan skrip dalam 3 pertanyaan cepat.
1. Jika file gambar ada di dalam folder `assets/images`, penulisan path HTML yang benar dari `index.html` adalah?
2. Shortcut VS Code apa yang dipakai untuk menduplikat baris kode langsung ke bawah?