Belajar Web Dasar (HTML, CSS, JavaScript, DOM)
Belajar Web Dasar (HTML, CSS, JavaScript, DOM)
Pengantar
Modul ajar ini dirancang untuk pengembangan web dasar menggunakan HTML, CSS, dan JavaScript, hingga
manipulasi DOM. Pemahaman yang kuat terhadap materi dalam modul ini akan menjadi fondasi esensial
sebelum Anda melangkah lebih jauh ke pengembangan web sisi server menggunakan bahasa seperti PHP dan
interaksi dengan database seperti MySQL, karena semua data yang diproses di backend pada akhirnya akan
ditampilkan dan dimanipulasi di sisi klien melalui teknologi yang dibahas di sini. Modul ini akan membimbing
Anda melalui 6 sesi praktikum yang berfokus pada konsep-konsep inti dan praktik dalam membangun
antarmuka web interaktif. Semoga modul ini bermanfaat bagi Anda dalam mempelajari pengembangan web
dasar. Selamat belajar dan bereksperimen!
Tujuan Pembelajaran
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu:
Di repositori tersebut tersedia semua modul dalam format Markdown (.md) dan juga PDF (.pdf), sehingga
bisa dipelajari secara offline maupun online.
Tujuan Pembelajaran
Materi
HTML (HyperText Markup Language) adalah bahasa markup standar untuk membuat halaman web. HTML
mendefinisikan struktur dan konten halaman web. HTML5 adalah versi terbaru dari HTML yang
memperkenalkan banyak fitur baru untuk multimedia, grafis, dan semantik.
Setiap dokumen HTML5 dimulai dengan deklarasi <!DOCTYPE html> dan elemen <html> . Di dalamnya
terdapat elemen <head> (untuk metadata) dan <body> (untuk konten yang terlihat oleh pengguna).
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Judul Halaman Saya</title>
</head>
<body>
<h1>Selamat Datang di Halaman Web Saya</h1>
<p>Ini adalah paragraf pertama.</p>
</body>
</html>
HTML5 memperkenalkan elemen semantik yang memberikan makna pada struktur konten, bukan hanya
presentasi. Ini membantu mesin pencari dan teknologi asistif memahami halaman Anda dengan lebih baik.
Tautan ( <a> ): Digunakan untuk menghubungkan satu halaman web ke halaman lain atau sumber
daya eksternal.
Gambar ( <img> ): Digunakan untuk menyisipkan gambar ke dalam halaman web. Atribut src
menentukan lokasi gambar, dan alt menyediakan teks alternatif untuk aksesibilitas.
Daftar Tak Berurut ( <ul> ): Item daftar ditandai dengan bullet point.
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
Daftar Berurut ( <ol> ): Item daftar ditandai dengan angka atau huruf.
<ol>
<li>Langkah 1</li>
<li>Langkah 2</li>
</ol>
<table>
<thead>
<tr>
<th>Nama</th>
<th>Usia</th>
</tr>
</thead>
<tbody>
<tr>
<td>Yamin</td>
<td>20</td>
</tr>
<tr>
<td>Ani</td>
<td>22</td>
</tr>
</tbody>
</table>
Pembahasan
HTML adalah fondasi dari setiap halaman web. Memahami struktur dasar dan penggunaan elemen semantik
sangat penting untuk membangun halaman yang mudah diakses, diindeks oleh mesin pencari, dan mudah
dipelihara. Praktikum ini akan fokus pada penerapan elemen-elemen dasar HTML untuk membuat kerangka
halaman web yang solid.
Contoh Kode
Berikut adalah contoh kode HTML lengkap untuk sebuah halaman profil sederhana:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Profil Saya</title>
</head>
<body>
<header>
<h1>Profil Singkat</h1>
<nav>
<ul>
<li><a href="#tentang">Tentang Saya</a></li>
<li><a href="#pendidikan">Pendidikan</a></li>
<li><a href="#kontak">Kontak</a></li>
</ul>
</nav>
</header>
<main>
<section id="tentang">
<h2>Tentang Saya</h2>
<p>Halo, nama saya [Nama Anda]. Saya adalah seorang mahasiswa yang tertar
<img src="[Link] alt="Foto Profil">
</section>
<section id="pendidikan">
<h2>Pendidikan</h2>
<table>
<thead>
<tr>
<th>Institusi</th>
<th>Jurusan</th>
<th>Tahun</th>
</tr>
</thead>
<tbody>
<tr>
<td>Universitas XYZ</td>
<td>Teknik Informatika</td>
<td>2022 - Sekarang</td>
</tr>
</tbody>
</table>
</section>
<section id="kontak">
<h2>Kontak</h2>
<ul>
<li>Email: <a href="[Link]
<li>LinkedIn: <a href="#">[Profil LinkedIn Anda]</a></li>
</ul>
</section>
</main>
<footer>
<p>© 2025 [Nama Anda]. Hak Cipta Dilindungi.</p>
</footer>
</body>
</html>
Kode HTM diatas jika dijalankan akan mengahasilkan tampilan seperti berikut :
PRAKTIKUM 1 HTML
Langkah-langkah Praktikum
1. Buat folder baru di komputer Anda dengan nama NIM_NAMA_PRAKTIKUM_HTML , lalu buat sub folder
baru dengan nama Web Profil .
2. Di dalam folder Web Profil tersebut, buat file baru bernama [Link] .
3. Buka [Link] dengan editor teks VS Code.
4. Salin dan tempel kode contoh di atas ke dalam [Link] .
5. Ganti placeholder [Nama Anda] , nama@[Link] , dan [Profil LinkedIn Anda] dengan
informasi Anda sendiri.
6. Ganti URL gambar [Link] dengan URL gambar Anda sendiri atau biarkan
untuk sementara.
7. Simpan file [Link] .
8. Buka file [Link] di browser web Anda untuk melihat hasilnya.
9. Eksplorasi:
Tambahkan paragraf baru di bagian Tentang Saya .
Tambahkan baris baru ke tabel Pendidikan .
Buat daftar tak berurut baru di bagian Kontak untuk menambahkan media sosial lain.
TUGAS 1 HTML
Tujuan Pembelajaran
Materi
CSS (Cascading Style Sheets) adalah bahasa stylesheet yang digunakan untuk mendeskripsikan presentasi
dokumen yang ditulis dalam HTML atau XML. CSS memungkinkan Anda mengontrol tampilan halaman web,
seperti warna, font, layout, dan responsivitas.
Ada tiga cara utama untuk menyisipkan CSS ke dalam dokumen HTML:
Inline Style: Langsung pada elemen HTML menggunakan atribut style . (Tidak disarankan untuk
proyek besar)
Internal Style Sheet: Di dalam elemen <style> di bagian <head> dokumen HTML.
<head>
<style>
h1 {
color: green;
}
</style>
</head>
External Style Sheet: File .css terpisah yang dihubungkan ke dokumen HTML menggunakan
elemen <link> di bagian <head> . (Paling disarankan)
<head>
<link rel="stylesheet" href="[Link]">
</head>
Selektor digunakan untuk "menemukan" (atau memilih) elemen HTML yang ingin Anda gayakan.
p {
color: black;
}
.highlight {
background-color: yellow;
}
Selektor ID ( # ): Memilih elemen dengan atribut id tertentu. ID harus unik dalam satu halaman.
#header {
border: 1px solid red;
}
Setiap elemen HTML dianggap sebagai kotak. Box model terdiri dari:
+-----------------------+
| Margin |
| +-----------------+ |
| | Border | |
| | +-----------+ | |
| | | Padding | | |
| | | +-------+ | | |
| | | |Content| | | |
| | | +-------+ | | |
| | | | | |
| | +-----------+ | |
| +-----------------+ |
+-----------------------+
Flexbox (Flexible Box Layout) adalah modul layout satu dimensi yang dirancang untuk mendistribusikan ruang
di antara item-item dalam sebuah kontainer, bahkan ketika ukurannya tidak diketahui atau dinamis.
Pembahasan
CSS adalah kunci untuk membuat halaman web terlihat menarik dan profesional. Dengan menguasai selektor
dan properti dasar, serta memahami box model, mahasiswa dapat mulai mendesain layout yang kompleks.
Penggunaan external style sheet adalah praktik terbaik untuk menjaga kode tetap rapi dan mudah dikelola.
Flexbox akan menjadi alat utama untuk mengatur tata letak elemen secara efisien.
Contoh Kode
Berikut adalah contoh kode HTML dan CSS untuk halaman profil yang dipercantik:
[Link]
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Profil Saya - Dengan CSS</title>
<link rel="stylesheet" href="[Link]">
</head>
<body>
<header>
<h1>Profil Singkat</h1>
<nav>
<ul>
<li><a href="#tentang">Tentang Saya</a></li>
<li><a href="#pendidikan">Pendidikan</a></li>
<li><a href="#kontak">Kontak</a></li>
</ul>
</nav>
</header>
<main>
<section id="tentang">
<h2>Tentang Saya</h2>
<p>Halo, nama saya [Nama Anda]. Saya adalah seorang mahasiswa yang tertar
<img src="[Link] alt="Foto Profil">
</section>
<section id="pendidikan">
<h2>Pendidikan</h2>
<table>
<thead>
<tr>
<th>Institusi</th>
<th>Jurusan</th>
<th>Tahun</th>
</tr>
</thead>
<tbody>
<tr>
<td>Universitas XYZ</td>
<td>Teknik Informatika</td>
<td>2022 - Sekarang</td>
</tr>
</tbody>
</table>
</section>
<section id="kontak">
<h2>Kontak</h2>
<ul>
<li>Email: <a href="[Link]
<li>LinkedIn: <a href="#">[Profil LinkedIn Anda]</a></li>
</ul>
</section>
</main>
<footer>
<p>© 2025 [Nama Anda]. Hak Cipta Dilindungi.</p>
</footer>
</body>
</html>
[Link]
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
color: #333;
}
header {
background-color: #333;
color: #fff;
padding: 1rem 0;
text-align: center;
}
header h1 {
margin: 0;
}
nav ul {
list-style: none;
padding: 0;
display: flex;
justify-content: center;
}
nav ul li {
margin: 0 15px;
}
nav ul li a {
color: #fff;
text-decoration: none;
}
main {
padding: 20px;
max-width: 800px;
margin: 20px auto;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
section {
margin-bottom: 20px;
padding: 15px;
border: 1px solid #ddd;
border-radius: 5px;
}
img {
max-width: 100%;
height: auto;
display: block;
margin: 10px 0;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
table, th, td {
border: 1px solid #ddd;
}
th, td {
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
footer {
text-align: center;
padding: 20px;
background-color: #333;
color: #fff;
position: relative;
bottom: 0;
width: 100%;
}
PRAKTIKUM 2 CSS
Langkah-langkah Praktikum
TUGAS 2 CSS
Perbaiki tampilan halaman web pribadi Anda dari Penugasan Pertemuan 1 menggunakan CSS:
Tujuan Pembelajaran
1. Memahami apa itu DOM dan perannya dalam pengembangan web interaktif.
2. Mengakses elemen HTML menggunakan berbagai metode seleksi DOM.
3. Memanipulasi konten teks dan atribut elemen HTML.
4. Mengubah gaya (CSS) elemen secara dinamis menggunakan JavaScript.
5. Membuat dan menghapus elemen HTML baru.
Materi
DOM (Document Object Model) adalah antarmuka pemrograman untuk dokumen HTML dan XML. Ini
merepresentasikan halaman web sebagai struktur pohon (tree structure) di mana setiap node adalah bagian
dari dokumen (elemen, atribut, teks, dll.). JavaScript dapat menggunakan DOM untuk mengakses dan
memanipulasi struktur, konten, dan gaya halaman web secara dinamis.
Bayangkan halaman HTML Anda sebagai sebuah pohon keluarga. Setiap tag HTML (seperti <html> ,
<body> , <p> , <div> ) adalah anggota keluarga (node). Hubungan antara tag-tag ini (induk, anak,
saudara) membentuk struktur pohon. DOM adalah cara JavaScript untuk "berbicara" dengan pohon ini,
memungkinkan kita untuk:
Mengubah Atribut:
[Link]('nama-atribut', 'nilai') : Mengatur nilai atribut.
[Link]('nama-atribut') : Mendapatkan nilai atribut.
[Link]('nama-atribut') : Menghapus atribut.
Pembahasan
Manipulasi DOM adalah inti dari interaktivitas web modern. Dengan DOM, JavaScript dapat merespons
tindakan pengguna, memperbarui konten secara real-time, dan menciptakan pengalaman pengguna yang
dinamis tanpa perlu memuat ulang halaman. Praktikum ini akan memberikan dasar yang kuat untuk
berinteraksi dengan struktur halaman web menggunakan JavaScript.
Contoh Kode
[Link]
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Praktikum DOM Dasar</title>
<style>
#kotak {
width: 100px;
height: 100px;
background-color: lightblue;
margin: 20px;
border: 1px solid blue;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
transition: background-color 0.3s;
}
.highlight {
background-color: yellow;
border-color: orange;
}
</style>
</head>
<body>
<h1 id="judul">Selamat Datang di DOM!</h1>
<p class="teks-info">Ini adalah paragraf informasi.</p>
<button id="ubahJudul">Ubah Judul</button>
<button id="tambahParagraf">Tambah Paragraf</button>
<button id="hapusParagraf">Hapus Paragraf Terakhir</button>
<button id="ubahWarna">Ubah Warna Kotak</button>
<button id="toggleHighlight">Toggle Highlight</button>
<script src="[Link]"></script>
</body>
</html>
[Link]
[Link]('DOMContentLoaded', function() {
const judulElement = [Link]('judul');
const ubahJudulBtn = [Link]('ubahJudul');
const tambahParagrafBtn = [Link]('tambahParagraf');
const hapusParagrafBtn = [Link]('hapusParagraf');
const ubahWarnaBtn = [Link]('ubahWarna');
const kotakElement = [Link]('kotak');
const toggleHighlightBtn = [Link]('toggleHighlight');
// Mengubah judul
[Link]('click', function() {
[Link] = 'Judul Telah Diubah oleh DOM!';
});
PRAKTIKUM 3 DOM
Langkah-langkah Praktikum
TUGAS 3 DOM
Buatlah halaman web sederhana dengan fungsionalitas berikut menggunakan manipulasi DOM:
Tujuan Pembelajaran
Materi
Pada pertemuan terakhir ini, kita akan menggabungkan semua pengetahuan yang telah diperoleh tentang
HTML, CSS, dan JavaScript, dengan fokus pada penanganan peristiwa dan validasi formulir untuk menciptakan
pengalaman pengguna yang lebih kaya.
Peristiwa adalah sinyal bahwa sesuatu telah terjadi di browser (misalnya, halaman selesai dimuat, tombol
diklik, input diubah). JavaScript memungkinkan kita untuk "mendengarkan" peristiwa ini dan menjalankan
fungsi sebagai respons.
Metode addEventListener() : Cara paling modern dan disarankan untuk mendaftarkan event
handler.
Objek Event: Fungsi event handler menerima objek event sebagai argumen, yang berisi informasi
tentang peristiwa yang terjadi.
[Link]("click", function(event) {
[Link]("Elemen yang diklik:", [Link]);
[Link]("Koordinat X:", [Link]);
});
Validasi formulir adalah proses memastikan bahwa input pengguna memenuhi kriteria tertentu sebelum data
dikirim ke server. Validasi sisi klien memberikan umpan balik instan kepada pengguna.
Pengecekan Kondisi: Gunakan pernyataan if/else untuk memeriksa apakah input kosong,
formatnya benar (misalnya, email), atau panjangnya sesuai.
Memberikan Umpan Balik: Ubah gaya elemen input (misalnya, border merah), tampilkan pesan error
di dekat input, atau gunakan alert() .
Untuk membangun aplikasi web yang kohesif, penting untuk memahami bagaimana ketiga teknologi ini
bekerja sama:
Contoh integrasi:
Pembahasan
Penanganan peristiwa adalah fondasi dari setiap aplikasi web interaktif. Dengan menguasai event handling,
mahasiswa dapat membuat halaman web yang responsif terhadap tindakan pengguna. Validasi formulir sisi
klien adalah praktik penting untuk meningkatkan pengalaman pengguna dan mengurangi beban server.
Pertemuan ini akan menyatukan semua konsep yang telah dipelajari untuk membangun aplikasi web yang
lebih fungsional dan dinamis.
Contoh Kode
Berikut adalah contoh aplikasi kalkulator sederhana dengan validasi formulir dan penanganan peristiwa:
[Link]
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kalkulator Interaktif</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f0f2f5;
margin: 0;
}
.container {
background-color: #fff;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
text-align: center;
width: 300px;
}
h1 {
color: #333;
margin-bottom: 20px;
}
input, select, button {
width: calc(100% - 20px);
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box;
}
button {
background-color: #007bff;
color: white;
border: none;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #0056b3;
}
#result {
margin-top: 20px;
font-size: 1.5em;
font-weight: bold;
color: #28a745;
}
.error-message {
color: red;
font-size: 0.9em;
margin-top: -10px;
margin-bottom: 10px;
text-align: left;
}
[Link] {
border-color: red;
}
</style>
</head>
<body>
<div class="container">
<h1>Kalkulator Sederhana</h1>
<form id="calculatorForm">
<input type="text" id="num1" placeholder="Angka Pertama">
<div id="num1Error" class="error-message"></div>
<select id="operator">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<button type="submit">Hitung</button>
</form>
<div id="result"></div>
</div>
<script src="[Link]"></script>
</body>
</html>
[Link]
[Link]("DOMContentLoaded", function() {
const calculatorForm = [Link]("calculatorForm");
const num1Input = [Link]("num1");
const num2Input = [Link]("num2");
const operatorSelect = [Link]("operator");
const resultDiv = [Link]("result");
[Link]("submit", function(event) {
[Link](); // Mencegah form dari submit default
if (!isValid) {
return; // Hentikan eksekusi jika ada error validasi
}
let result;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 === 0) {
[Link] = "Error: Pembagian dengan nol!";
[Link] = "red";
return;
} else {
result = num1 / num2;
}
break;
default:
[Link] = "Operator tidak valid.";
[Link] = "red";
return;
}
[Link]("input", function() {
[Link] = "";
[Link]("invalid");
});
});
Langkah-langkah Praktikum
Buatlah halaman web sederhana yang menampilkan daftar item yang dapat ditambahkan dan dihapus
(seperti daftar belanja atau to-do list):
1. HTML: Buat sebuah input teks untuk item baru, sebuah tombol "Tambah Item", dan sebuah daftar tak
berurut ( <ul> ) kosong dengan id="itemList" .
2. CSS: Berikan gaya dasar agar tampilan menarik (misalnya, styling untuk input, tombol, dan item daftar).
3. JavaScript:
Ketika tombol "Tambah Item" diklik:
Ambil nilai dari input teks.
Lakukan validasi: jika input kosong, tampilkan pesan error dan jangan tambahkan item.
Jika tidak kosong, buat elemen <li> baru.
Tambahkan teks dari input ke <li> .
Tambahkan tombol "Hapus" ( <button>Hapus</button> ) di samping setiap item <li>
yang baru dibuat.
Tambahkan <li> ini ke <ul> dengan id="itemList" .
Kosongkan input teks setelah item ditambahkan.
Ketika tombol "Hapus" di samping item diklik:
Hapus item <li> yang bersangkutan dari daftar.