Bucin alias budak cinta tidak selalu harus lewat chat atau gift mahal. Di tahun 2025 ini, banyak pasangan kreatif yang justru memilih menyatakan perasaan lewat teknologi sederhana, yaitu dari script HTML bucin.
Dengan sedikit kode HTML, CSS, dan JavaScript, Sahabat Qwords bisa bikin halaman romantis interaktif yang siap dikirim ke pasangan.
Cara Membuat Script HTML Bucin 2025
Meskipun terdengar teknis, sebenarnya langkah membuat script HTML bucin sangat sederhana. Berikut panduan singkat:
1. Tentukan Tema & Pesan
Mulai dari ide dasar: mau bikin halaman ucapan ulang tahun, pernyataan cinta, permintaan maaf, atau sekadar gombalan lucu?
Contoh pesan:
- “Aku sayang kamu sampai pelangi 🌈”
- “Selamat ulang tahun, cahaya hidupku 🎂”
2. Buat Struktur HTML
Bikin file index.html
atau cintaku.html
. Gunakan elemen <h1>
untuk judul, <p>
untuk pesan, dan <button>
untuk interaksi.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>HTML Bucin 2025</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<h1 class="judul">Aku Sayang Kamu ❤️</h1>
<button id="btnSayang">Klik Aku</button>
<script src="script.js"></script>
</body>
</html>
3. Tambahkan Gaya dengan CSS
Buat file styles.css
agar tampilan lebih manis.
body {
background-color: #ffeef8;
text-align: center;
font-family: sans-serif;
}
.judul {
color: #e91e63;
font-size: 2.5em;
}
#btnSayang {
background: #f06292;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 50px;
cursor: pointer;
}
4. Tambahkan Interaksi dengan JavaScript
Gunakan file script.js
untuk memberi efek klik.
document.getElementById('btnSayang').onclick = function() {
alert('Kamu bikin hariku lebih indah! 🌸');
};
5. Uji Coba
Buka file di browser. Kalau sudah oke, Sahabat Qwords bisa upload ke GitHub Pages, Replit, atau cukup kirim file ke pasangan.
8 Contoh Script HTML Bucin 2025
1) Menyatakan Perasaan
Halaman pernyataan cinta manis + animasi detak jantung dan bintang berkilau.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Menyatakan Perasaan | Sayang Tak Bertepi</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{
--pink:#ff66b2; --pink-dark:#ff4081; --bg:#ffccf2; --heart:#ff1744;
}
*{box-sizing:border-box}
body{
margin:0; min-height:100vh; display:flex; flex-direction:column;
align-items:center; justify-content:center;
background: radial-gradient(circle at 30% 30%, #fff 0%, var(--bg) 60%);
color:var(--pink-dark); font-family: 'Arial', sans-serif; text-align:center;
overflow:hidden; padding:24px;
}
h1{ font-size:48px; margin:10px 0 6px }
p.lead{ font-size:20px; color:#a4005f; margin:0 0 12px }
.heart{
font-size:100px; color:var(--heart); animation:beat 1.1s infinite ease-in-out;
filter: drop-shadow(0 8px 16px rgba(255,0,64,.25));
margin:18px 0 12px;
}
@keyframes beat{
0%,20%,50%,80%,100%{ transform:scale(1) }
40%{ transform:scale(1.18) }
60%{ transform:scale(.92) }
}
.btn{
background:var(--pink); color:#fff; border:0; border-radius:48px;
padding:12px 24px; cursor:pointer; font-size:16px; transition:.25s;
margin-top:14px
}
.btn:hover{ background:var(--pink-dark); transform:translateY(-2px) }
.stars span{
position:absolute; top:-10vh; font-size:12px; color:#fff; opacity:.75;
animation:fall linear infinite;
}
@keyframes fall{
to{ transform: translateY(120vh) translateX(-10vw); opacity:.1 }
}
footer{ position:fixed; bottom:10px; left:0; right:0; font-size:12px; color:#7a0a58 }
</style>
</head>
<body>
<h1>Aku Cinta Kamu! 💖</h1>
<p class="lead">Setiap detik bersamamu adalah bahagia yang tak terhitung.</p>
<div class="heart">💖</div>
<button class="btn" id="btnRahasia">Klik untuk rahasia</button>
<footer>© 2025 Bucin Tech — Halaman cinta sederhana untuk kamu</footer>
<div class="stars" id="stars"></div>
<script>
// Bintang jatuh
const stars = document.getElementById('stars');
for(let i=0;i<40;i++){
const s=document.createElement('span');
s.textContent='✦';
s.style.left=Math.random()*100+'vw';
s.style.animationDuration=(6+Math.random()*6)+'s';
s.style.animationDelay=(Math.random()*4)+'s';
s.style.fontSize=(8+Math.random()*14)+'px';
stars.appendChild(s);
}
// Rahasia manis
document.getElementById('btnRahasia').addEventListener('click', ()=>{
alert('Rahasiaku: aku pengin menua bareng kamu. ❤️');
});
</script>
</body>
</html>
2) Ucapan Terima Kasih
Ucapan apresiasi + animasi denyut dan gradient lembut.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Terima Kasih Sayang</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#f0f8ff; --text:#ff3399 }
body{
margin:0; min-height:100vh; display:flex; align-items:center; justify-content:center;
background:linear-gradient(135deg, var(--bg), #fff);
font-family:'Georgia', serif; color:var(--text); text-align:center; padding:24px;
}
h1{ font-size:40px; margin:0 0 8px }
p{ font-size:18px; margin:0 0 16px }
.heart{ font-size:84px; animation:pulse 1.4s infinite }
@keyframes pulse{
0%{ transform:scale(1) } 50%{ transform:scale(1.25) } 100%{ transform:scale(1) }
}
.tag{
margin-top:14px; font-size:12px; color:#b20c67
}
</style>
</head>
<body>
<main>
<h1>Terima Kasih, Sayang! 💕</h1>
<p>Karena ada kamu, dunia ini terasa lebih lembut dan hangat.</p>
<div class="heart">💖</div>
<p class="tag">“Setiap perhatianmu adalah alasan senyumku hari ini.”</p>
</main>
</body>
</html>
3) Ucapan Ulang Tahun
Ucapan ultah + animasi balon mengapung dan confetti sederhana via JS.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Selamat Ulang Tahun, Cinta!</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#fff0f5; --accent:#ff6699 }
body{
margin:0; padding:24px; min-height:100vh; text-align:center;
background: radial-gradient(circle at 70% 20%, #fff, var(--bg) 65%);
color:var(--accent); font-family:'Verdana', sans-serif; overflow:hidden;
}
h1{ font-size:50px; margin-top:32px; }
p{ font-size:20px }
.balloons{ font-size:100px; animation:float 3s ease-in-out infinite; margin:12px 0 }
@keyframes float{ 0%{transform:translateY(0)} 50%{transform:translateY(-26px)} 100%{transform:translateY(0)} }
.confetti span{
position:absolute; top:-10vh; font-size:14px; animation:drop linear infinite;
}
@keyframes drop{ to{ transform:translateY(120vh) rotate(360deg); opacity:.2 } }
.btn{
border:0; background:var(--accent); color:#fff; padding:10px 18px; border-radius:36px; cursor:pointer;
box-shadow:0 8px 20px rgba(255,102,153,.35); transition:.25s; margin-top:12px
}
.btn:hover{ transform:translateY(-2px) }
</style>
</head>
<body>
<h1>Selamat Ulang Tahun, Cinta! 🎂</h1>
<p>Semoga harimu penuh kebahagiaan—seperti kamu memenuhi hatiku. 🎉</p>
<div class="balloons">🎈🎈🎈</div>
<button class="btn" id="btnKado">Buka Kado</button>
<div class="confetti" id="confetti"></div>
<script>
// Confetti
const confetti = document.getElementById('confetti');
const icons = ['★','✿','✦','❀','♦','●'];
for(let i=0;i<80;i++){
const s = document.createElement('span');
s.textContent = icons[Math.floor(Math.random()*icons.length)];
s.style.left = Math.random()*100+'vw';
s.style.color = ['#ff6699','#ff8ea8','#ffc0cb','#ffd1dc','#ff99cc'][Math.floor(Math.random()*5)];
s.style.animationDuration = (5 + Math.random()*6)+'s';
s.style.animationDelay = (Math.random()*3)+'s';
confetti.appendChild(s);
}
// Kado
document.getElementById('btnKado').addEventListener('click', ()=>{
alert('Hadiah kecil: Doa-doaku untukmu sepanjang tahun ini 💝');
});
</script>
</body>
</html>
4) Permintaan Maaf
Permintaan maaf tulus + animasi goyangan dan tombol komitmen.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Permintaan Maaf | Dari Hati</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#eef7ff; --text:#ff69b4; --accent:#ff6347 }
body{
margin:0; min-height:100vh; display:grid; place-content:center;
background:linear-gradient(180deg, var(--bg), #fff);
font-family:'Tahoma', sans-serif; color:var(--text); text-align:center; padding:24px;
}
h1{ font-size:44px; margin:0 0 12px }
p{ font-size:18px; margin:0 0 16px }
.sorry{ font-size:86px; color:var(--accent); animation:wiggle 1s infinite }
@keyframes wiggle{
0%,100%{ transform:rotate(0) } 25%{ transform:rotate(10deg) } 50%{ transform:rotate(0) } 75%{ transform:rotate(-10deg) }
}
.btn{
border:0; background:var(--text); color:#fff; padding:10px 18px; border-radius:12px; cursor:pointer;
box-shadow:0 8px 18px rgba(255,105,180,.25); transition:.25s;
}
.btn:hover{ transform:translateY(-2px) }
small{ color:#a10063 }
</style>
</head>
<body>
<main>
<h1>Maafkan Aku, Sayang…</h1>
<p>Aku menyesal. Boleh beri aku kesempatan untuk memperbaiki semuanya?</p>
<div class="sorry">😢</div>
<button class="btn" id="btnJanji">Aku Janji Berubah</button>
<p><small>Janji ini kutulis supaya selalu kuingat.</small></p>
</main>
<script>
document.getElementById('btnJanji').addEventListener('click', ()=>{
alert('Aku janji lebih sabar, lebih peka, dan lebih mengutamakan kamu. 💖');
});
</script>
</body>
</html>
5) Tembak Gebetan
Interaktif lucu: tombol “Gamau” lari-lari kalau mau diklik.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Mau Jadi Pacarku?</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#fff7fb; --pink:#e91e63; --ok:#43a047; --no:#f4511e }
body{
margin:0; min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
background:var(--bg); font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif; color:#7a0040; text-align:center; overflow:hidden; padding:24px;
}
h1{ font-size:36px; margin:0 0 10px }
p{ margin:0 0 18px }
.board{ position:relative; width:min(560px, 92vw); height:260px; border-radius:20px; background:#fff; box-shadow:0 12px 28px rgba(233,30,99,.15); display:flex; align-items:center; justify-content:center; gap:16px; margin-top:8px }
button{ border:0; padding:10px 16px; border-radius:12px; cursor:pointer; font-weight:600; transition:.2s }
#mau{ background:var(--ok); color:#fff }
#gamau{ background:var(--no); color:#fff; position:absolute; }
#mau:hover{ transform:translateY(-2px) }
</style>
</head>
<body>
<h1>Mau nggak jadi pacarku? 😁✨</h1>
<p>Pilih jujur ya… hati-hati tombolnya nakal 😜</p>
<div class="board" id="board">
<button id="mau">Mau! 💚</button>
<button id="gamau">Gamau 🙅♀️</button>
</div>
<script>
const board = document.getElementById('board');
const gamau = document.getElementById('gamau');
const mau = document.getElementById('mau');
// Posisi awal "Gamau"
const setRandom = () => {
const pad = 8;
const rect = board.getBoundingClientRect();
const x = Math.random() * (rect.width - 100 - pad*2) + pad;
const y = Math.random() * (rect.height - 44 - pad*2) + pad;
gamau.style.left = x + 'px';
gamau.style.top = y + 'px';
};
setRandom();
gamau.addEventListener('mouseenter', setRandom);
gamau.addEventListener('click', setRandom);
mau.addEventListener('click', ()=>alert('Yeay! Kamu resmi jadi kebahagiaanku! 💖'));
</script>
</body>
</html>
6) Anniversary
Hitung mundur ke tanggal anniversary + kembang api ASCII sederhana.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Happy Anniversary Kita!</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#fffaf0; --accent:#d81b60 }
body{
margin:0; min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
background:linear-gradient(180deg, #fff, var(--bg)); color:#7a0037; text-align:center; font-family:'Poppins',system-ui; padding:24px;
}
h1{ margin:4px 0 8px; font-size:42px; color:var(--accent) }
.tgt{ font-weight:600; color:#b2004a }
.count{ font-size:32px; margin:8px 0 18px }
pre{
background:#fff; padding:14px; border-radius:12px; box-shadow:0 10px 26px rgba(216,27,96,.12);
margin:0; width:min(520px, 92vw); overflow:auto; text-align:left; color:#b2004a
}
small{ color:#9c0d56 }
</style>
</head>
<body>
<h1>Happy Anniversary 💍</h1>
<p>Kita rayakan momen spesial ini bareng-bareng!</p>
<p>Menuju tanggal <span class="tgt" id="targetStr">14-10-2025</span>:</p>
<div class="count" id="count">-- hari -- jam -- menit -- detik</div>
<pre id="fx">
(•‿•) ✨
</pre>
<small>PS: Setelah hitung mundur selesai, ada “kembang api” mini. 🎆</small>
<script>
// Set target anniversary (DD-MM-YYYY)
const target = new Date(2025, 9, 14, 0, 0, 0); // 14 Oct 2025
const countEl = document.getElementById('count');
const fx = document.getElementById('fx');
const fireFrames = [
` *
* *
* * *
* * ✨ * *
* * * * `,
` * * *
* ✨ * *
* * * * *
* * * `,
` * * *
* * ✨
* * * * `
];
let i=0;
setInterval(()=>{
const now = new Date();
const diff = target - now;
if (diff <= 0){
countEl.textContent = 'Selamat Anniversary! 💖';
fx.textContent = fireFrames[i%fireFrames.length];
i++;
return;
}
const s = Math.floor(diff/1000);
const d = Math.floor(s/86400);
const h = Math.floor((s%86400)/3600);
const m = Math.floor((s%3600)/60);
const ss = s%60;
countEl.textContent = `${d} hari ${h} jam ${m} menit ${ss} detik`;
fx.textContent = fireFrames[i%fireFrames.length];
i++;
}, 1000);
</script>
</body>
</html>
7) Valentine
Hujan hati turun dari atas layar, vibe Valentine yang lembut.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Happy Valentine’s Day</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#ffeef8; --text:#c2185b }
body{
margin:0; min-height:100vh; background:var(--bg); color:var(--text);
font-family:'Segoe UI', Roboto, sans-serif; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; overflow:hidden; padding:24px;
}
h1{ font-size:44px; margin:0 0 8px }
p{ margin:0 0 14px }
.rain span{
position:absolute; top:-5vh; font-size:18px; animation:fall linear infinite;
opacity:.9;
}
@keyframes fall{ to{ transform:translateY(115vh); opacity:.1 } }
.btn{
border:0; background:#e91e63; color:#fff; padding:10px 18px; border-radius:40px; cursor:pointer; box-shadow:0 8px 20px rgba(233,30,99,.25);
}
</style>
</head>
<body>
<h1>Happy Valentine’s Day 🌹</h1>
<p>Kamu adalah paragraf terindah dalam cerita hidupku.</p>
<button class="btn" id="btnLove">Peluk Virtual</button>
<div class="rain" id="rain"></div>
<script>
const rain = document.getElementById('rain');
const em = ['💖','💘','💕','💓','💗'];
for(let i=0;i<60;i++){
const s=document.createElement('span');
s.textContent=em[Math.floor(Math.random()*em.length)];
s.style.left=Math.random()*100+'vw';
s.style.animationDuration=(4+Math.random()*6)+'s';
s.style.animationDelay=(Math.random()*3)+'s';
s.style.fontSize=(14+Math.random()*18)+'px';
rain.appendChild(s);
}
document.getElementById('btnLove').addEventListener('click', ()=>alert('Peluk balik… erat banget! 🤗💞'));
</script>
</body>
</html>
8) Pesan Rahasia
Tombol buka rahasia memunculkan modal (popup) berisi pengakuan manis.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Pesan Rahasia untuk Kamu</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{ --bg:#fdf7ff; --primary:#7b1fa2; --overlay:rgba(0,0,0,.5) }
body{
margin:0; min-height:100vh; display:grid; place-content:center;
background: radial-gradient(circle at 50% 50%, #fff, var(--bg) 70%);
color:#4a155f; font-family:'Inter',system-ui; text-align:center; padding:24px;
}
h1{ margin:0 0 6px }
p{ margin:0 0 16px }
.btn{
border:0; background:var(--primary); color:#fff; padding:10px 18px; border-radius:12px; cursor:pointer;
box-shadow:0 12px 24px rgba(123,31,162,.2);
}
.overlay{
position:fixed; inset:0; background:var(--overlay); display:none; align-items:center; justify-content:center; padding:16px;
}
.modal{
width:min(520px, 92vw); background:#fff; border-radius:16px; padding:20px; text-align:left;
box-shadow:0 20px 40px rgba(0,0,0,.25); animation:pop .25s ease-out;
}
@keyframes pop{ from{ transform:scale(.92); opacity:0 } to{ transform:scale(1); opacity:1 } }
.modal h2{ margin:0 0 8px; color:var(--primary) }
.modal p{ color:#5b2c6f }
.modal .actions{ display:flex; gap:8px; margin-top:14px; justify-content:flex-end }
.ghost{ background:transparent; color:var(--primary); border:1px solid #e0c8f1 }
</style>
</head>
<body>
<main>
<h1>Pesan Rahasia 💌</h1>
<p>Ada sesuatu yang ingin kusampaikan, dari hati paling dalam.</p>
<button class="btn" id="open">Buka Rahasia</button>
</main>
<div class="overlay" id="overlay" aria-hidden="true">
<div class="modal" role="dialog" aria-modal="true">
<h2>Untuk Kamu</h2>
<p>Aku jatuh cinta pada cara kamu melihat dunia—dan caramu melihat aku di dalamnya. 💜</p>
<div class="actions">
<button class="ghost" id="later">Nanti aja</button>
<button class="btn" id="ok">Peluk Aku</button>
</div>
</div>
</div>
<script>
const overlay = document.getElementById('overlay');
document.getElementById('open').onclick = ()=> overlay.style.display='flex';
document.getElementById('later').onclick = ()=> overlay.style.display='none';
document.getElementById('ok').onclick = ()=>{
alert('Peluk hangat terkirim… 🤍'); overlay.style.display='none';
};
// Tutup dengan ESC
document.addEventListener('keydown', e=>{ if(e.key==='Escape') overlay.style.display='none' });
</script>
</body>
</html>
Membuat script HTML bucin 2025 itu mudah dan menyenangkan. Dengan HTML, CSS, dan sedikit JavaScript, pesan sederhana bisa jadi interaktif dan romantis. Cukup pilih tema, ubah warna atau animasi, lalu bagikan ke pasangan.
Contoh-contoh di atas bisa jadi inspirasi untuk ulang tahun, anniversary, hingga sekadar ucapan manis sehari-hari. Biarkan kode sederhana jadi bahasa cinta yang unik dan personal, bikin doi tersenyum seharian.