Membangun Impian Digitalmu: Kalkulator Cerdas dan Page Builder Kilat dengan HTML, CSS, JS

PintarApp Agustus 14, 2026
Membangun Impian Digitalmu: Kalkulator Cerdas dan Page Builder Kilat dengan HTML, CSS, JS

Pernahkah Anda merasa seperti "tersesat" di lautan framework dan library yang begitu banyak saat pertama kali belajar ngoding? Saya ingat betul, dulu sempat pusing tujuh keliling mencoba memahami React atau Angular, sampai rasanya seperti mencoba merakit mesin V8 hanya dengan melihat gambar di buku. Untungnya, di tengah kebingungan itu, saya kembali ke dasar: HTML, CSS, dan JavaScript murni. Dan, bam! Rasanya seperti menemukan resep rahasia masakan yang paling lezat, yang ternyata bahan-bahannya sederhana tapi hasilnya luar biasa.

Nah, hari ini kita akan menjelajahi kekuatan fundamental itu. Kita akan membongkar bagaimana caranya membangun dua aplikasi web yang sangat berguna dan menunjukkan inti dari interaksi front-end: sebuah aplikasi web kalkulator yang cerdas dan bahkan sebuah page builder sederhana yang interaktif. Semua ini, hanya dengan berbekal "tiga serangkai" HTML, CSS, dan JavaScript.

Fondasi Kuat: Kenapa HTML, CSS, dan JavaScript Masih Jadi Raja?

Bayangkan Anda sedang membangun sebuah rumah impian. Ketiga teknologi ini punya perannya masing-masing yang vital:

  • HTML (HyperText Markup Language): Ini adalah pondasi dan kerangka rumah Anda. Dengan HTML, kita mendefinisikan struktur halaman web kita – di mana ada pintu, jendela, dinding, atau bahkan furnitur. Tanpa HTML, tidak ada rumah yang bisa berdiri.
  • CSS (Cascading Style Sheets): Setelah kerangka berdiri, rumah Anda butuh sentuhan estetika, kan? Ini adalah desain interior dan eksterior rumah Anda. CSS mengatur warna dinding, jenis lantai, bentuk jendela, dan tata letak perabotan. Dengan CSS, rumah Anda jadi indah dan nyaman dipandang.
  • JavaScript (JS): Rumah yang bagus tidak hanya indah, tapi juga fungsional. JavaScript adalah sistem otomatisasi pintar di rumah Anda. Ini yang membuat lampu bisa menyala saat Anda masuk, pintu garasi bisa terbuka otomatis, atau AC bisa menyesuaikan suhu. Dengan JS, halaman web Anda menjadi interaktif dan hidup.

Memahami ketiga ini secara mendalam adalah kunci untuk menjadi programmer front-end yang tangguh, siap menghadapi tantangan apapun, bahkan tanpa framework sekalipun.

Merakit Kalkulator Sendiri: Otak Cerdas di Balik Layar

Membangun kalkulator mungkin terdengar sepele, tapi ini adalah proyek yang sangat baik untuk melatih logika dan manipulasi DOM (Document Object Model) dengan JavaScript. Ini seperti belajar menyolder rangkaian elektronik sederhana sebelum merakit robot kompleks.

1. HTML: Merancang Papan Tombol Kalkulator

Pertama, kita siapkan "rangka" kalkulatornya. Kita akan buat sebuah layar display dan tombol-tombol angka serta operasi. Ini seperti menata panel kontrol di dasbor mobil.


<div class="calculator">
<input type="text" id="display" readonly>
<div class="buttons">
<button data-value="7">7</button>
<button data-value="8">8</button>
<button data-value="9">9</button>
<button data-value="/" class="operator">/</button>
<button data-value="4">4</button>
<button data-value="5">5</button>
<button data-value="6">6</button>
<button data-value="*" class="operator">*</button>
<button data-value="1">1</button>
<button data-value="2">2</button>
<button data-value="3">3</button>
<button data-value="-" class="operator">-</button>
<button data-value="0">0</button>
<button data-value=".">.</button>
<button data-value="=" class="equal">=</button>
<button data-value="+" class="operator">+</button>
<button data-value="C" class="clear">C</button>
</div>
</div>

2. CSS: Mempercantik Tampilan Kalkulator

Agar kalkulator kita tidak polos, kita beri sentuhan gaya. Ini seperti memilih cat dan desain tombol agar nyaman dilihat dan digunakan.


.calculator {
width: 320px;
margin: 50px auto;
border: 1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
background-color: #f9f9f9;
padding: 20px;
}
#display {
width: calc(100% - 10px);
height: 40px;
margin-bottom: 10px;
padding: 5px;
font-size: 1.5em;
text-align: right;
border: 1px solid #eee;
border-radius: 3px;
}
.buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.buttons button {
padding: 15px;
font-size: 1.2em;
border: none;
border-radius: 5px;
cursor: pointer;
background-color: #e0e0e0;
transition: background-color 0.2s ease;
}
.buttons button:hover {
background-color: #d0d0d0;
}
.operator, .equal, .clear {
background-color: #ff9800;
color: white;
}
.operator:hover, .equal:hover, .clear:hover {
background-color: #e68900;
}

3. JavaScript: Menghidupkan Otak Kalkulator

Inilah bagian paling seru, di mana kita memasang "sistem kelistrikan" dan "mikroprosesor" kalkulator. JavaScript akan mendengarkan setiap klik tombol dan memproses perhitungannya.


document.addEventListener('DOMContentLoaded', () => {
const display = document.getElementById('display');
const buttons = document.querySelectorAll('.buttons button');
let currentInput = '';
let operator = null;
let previousInput = '';
buttons.forEach(button => {
button.addEventListener('click', () => {
const value = button.dataset.value;
if (value === 'C') {
currentInput = '';
operator = null;
previousInput = '';
display.value = '';
return;
}
if (value === '=') {
if (currentInput !== '' && previousInput !== '' && operator !== null) {
currentInput = eval(previousInput + operator + currentInput); // Sederhana, tapi hati-hati di production!
display.value = currentInput;
previousInput = '';
operator = null;
}
return;
}
if (['/', '*', '-', '+'].includes(value)) {
if (currentInput !== '') {
previousInput = currentInput;
currentInput = '';
operator = value;
}
return;
}
currentInput += value;
display.value = currentInput;
});
});
});

Catatan: Penggunaan eval() di JavaScript memang praktis untuk contoh sederhana ini, tapi di aplikasi produksi yang serius, Anda harus berhati-hati karena bisa berpotensi menimbulkan celah keamanan. Ada cara yang lebih aman untuk melakukan evaluasi ekspresi matematika.

Membangun Page Builder Interaktif: Kreativitas Tanpa Batas

Sekarang, mari kita naik level. Bayangkan Anda seorang koki yang tidak hanya bisa membuat satu jenis hidangan, tetapi juga bisa meracik menu baru dari berbagai bahan yang tersedia. Itulah konsep dari page builder sederhana ini. Kita akan membuat elemen-elemen yang bisa ditarik dan dilepaskan untuk membentuk tata letak halaman web. Ini adalah inti dari "drag-and-drop" yang banyak digunakan di editor modern.

1. HTML: Kanvas dan Bahan Baku

Kita butuh area tempat elemen bisa ditarik (bahan baku) dan area tempat elemen akan dijatuhkan (kanvas tempat merangkai).


<div class="page-builder-container">
<div class="sidebar">
<h3>Drag Elemen:</h3>
<div class="draggable-element" draggable="true" data-type="heading">Heading</div>
<div class="draggable-element" draggable="true" data-type="paragraph">Paragraf</div>
<div class="draggable-element" draggable="true" data-type="image">Gambar</div>
</div>
<div class="drop-zone">
<h3>Jatuhkan Elemen Di Sini</h3>
</div>
</div>

2. CSS: Menata Peralatan dan Kanvas

Kita akan menata sidebar dan area drop-zone agar jelas fungsinya, dan juga membuat elemen yang bisa ditarik terlihat menarik.


.page-builder-container {
display: flex;
gap: 20px;
margin: 30px auto;
max-width: 1000px;
border: 1px solid #eee;
padding: 20px;
box-shadow: 0 0 15px rgba(0,0,0,0.05);
}
.sidebar {
flex: 1;
border-right: 1px solid #ccc;
padding-right: 20px;
}
.draggable-element {
padding: 10px;
margin-bottom: 10px;
border: 1px solid #3498db;
background-color: #ecf0f1;
cursor: grab;
text-align: center;
border-radius: 4px;
transition: background-color 0.2s;
}
.draggable-element:hover {
background-color: #e0e6e7;
}
.drop-zone {
flex: 3;
min-height: 400px;
border: 2px dashed #a0a0a0;
background-color: #fcfcfc;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
border-radius: 5px;
}
.drop-zone.hover {
background-color: #e8f4f8;
border-color: #2980b9;
}
.drop-zone div { /* Style for dropped elements */
margin: 10px 0;
padding: 10px;
border: 1px solid #ccc;
width: 90%;
background-color: white;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

3. JavaScript: Mengatur Gerak dan Interaksi

Ini adalah bagian "magic" di mana kita membuat elemen bisa ditarik, dijatuhkan, dan muncul di tempat yang seharusnya. Ini seperti merancang sistem hidrolik dan motor di bengkel untuk memindahkan komponen mobil.


document.addEventListener('DOMContentLoaded', () => {
const draggables = document.querySelectorAll('.draggable-element');
const dropZone = document.querySelector('.drop-zone');
let draggedElement = null;
draggables.forEach(draggable => {
draggable.addEventListener('dragstart', (e) => {
draggedElement = e.target;
e.dataTransfer.setData('text/plain', e.target.dataset.type); // Menyimpan tipe elemen
setTimeout(() => {
e.target.style.opacity = '0.5';
}, 0);
});
draggable.addEventListener('dragend', (e) => {
e.target.style.opacity = '1';
draggedElement = null;
});
});
dropZone.addEventListener('dragover', (e) => {
e.preventDefault(); // Penting untuk mengizinkan drop
dropZone.classList.add('hover');
});
dropZone.addEventListener('dragleave', () => {
dropZone.classList.remove('hover');
});
dropZone.addEventListener('drop', (e) => {
e.preventDefault();
dropZone.classList.remove('hover');
if (draggedElement) {
const elementType = e.dataTransfer.getData('text/plain');
let newElement;
switch (elementType) {
case 'heading':
newElement = document.createElement('h2');
newElement.textContent = 'Judul Baru';
break;
case 'paragraph':
newElement = document.createElement('p');
newElement.textContent = 'Ini adalah paragraf baru yang bisa Anda edit.';
break;
case 'image':
newElement = document.createElement('img');
newElement.src = 'https://via.placeholder.com/150'; // Ganti dengan URL gambar Anda
newElement.alt = 'Placeholder Image';
newElement.style.maxWidth = '100%';
newElement.style.height = 'auto';
break;
default:
return;
}
dropZone.appendChild(newElement);
}
});
});

Ini adalah implementasi dasar dari drag-and-drop. Untuk membuatnya lebih fungsional, Anda bisa menambahkan fitur seperti: mengubah teks elemen setelah dijatuhkan, menghapus elemen, atau menyimpan tata letak ke LocalStorage.

Manfaat Belajar Membangun dari Nol

Meskipun ada banyak framework dan library di luar sana yang bisa memudahkan pekerjaan Anda, memahami dasar-dasar HTML, CSS, dan JavaScript secara mendalam adalah investasi terbaik untuk karier programming Anda. Ini seperti belajar mekanika dasar mobil sebelum mengemudi mobil balap F1.

  • Mempertajam Logika: Anda akan terbiasa memecah masalah besar menjadi bagian-bagian kecil yang bisa dikelola.
  • Memahami Cara Kerja Framework: Ketika nanti Anda beralih ke React, Vue, atau Angular, Anda akan lebih mudah memahami konsep di baliknya karena fondasinya sudah kuat.
  • Fleksibilitas: Anda tidak akan terikat pada satu tool saja. Jika ada proyek yang membutuhkan solusi vanilla JS, Anda siap.
  • Portofolio Menarik: Proyek-proyek seperti kalkulator dan page builder sederhana ini sangat bagus untuk menunjukkan kemampuan dasar Anda kepada calon pemberi kerja.

Siap Mengembangkan Impian Digital Anda?

Membangun kalkulator dan page builder sederhana dengan HTML, CSS, dan JavaScript murni adalah bukti nyata bahwa Anda tidak perlu alat yang paling canggih untuk menciptakan sesuatu yang berguna dan interaktif. Cukup dengan pemahaman yang solid akan dasar-dasar, kreativitas, dan sedikit ketekunan, Anda bisa membangun hampir apa saja di web.

Jadi, tantang diri Anda. Coba implementasikan proyek-proyek ini. Modifikasi kodenya, tambahkan fitur baru, dan rasakan kepuasan saat melihat ide Anda menjadi kenyataan di layar browser. Siapa tahu, mungkin ini adalah langkah pertama Anda menuju penemuan framework atau tool Anda sendiri di masa depan! Selamat mencoba dan jangan ragu bereksperimen!