Sampai tahap ini portofolio tampil dengan gaya bawaan browser. Bagian ini menatanya dengan satu file styles/style.css yang berada di folder proyek, sejajar dengan folder assets dan tests. Seluruh tahap selanjutnya memakai stylesheet yang sama, sehingga kita menuliskannya sekali hingga tuntas — termasuk aturan untuk tautan aktif dan tombol ke atas yang baru terpakai pada Bagian 4. Materi dasarnya berasal dari section HTML dan CSS; di sini kita menyatukannya untuk kasus nyata.
Prinsip Penataan Portofolio #
Stylesheet proyek berpegang pada lima prinsip berikut:
- Palet biru konsisten yang didefinisikan sekali sebagai custom properties, yaitu variabel CSS.
- Skala jarak seragam 16px agar renggangan antarbagian terasa rapi.
- Container utama selebar maksimum 960px yang menengahkan konten pada layar lebar.
- Section tampil sebagai kartu putih di atas latar abu, dengan setiap article dipisah garis tipis.
- Gambar dibatasi max-width: 100% supaya tidak meluber dari wadahnya.
Dua keputusan lainnya menyiapkan interaksi Bagian 4. Pertama, aturan scroll-behavior: smooth pada html membuat lompatan tautan anchor digulir dengan halus oleh browser. Kedua, tautan nav yang membawa class aktif digarisbawahi — statusnya yang akan diatur JavaScript nanti.
Isi Stylesheet Proyek #
Berikut isi utuh styles/style.css:
/* Stylesheet proyek Website Portofolio - ditulis pada Bagian 3, dipakai Bagian 3 dan 4 */
:root {
--warna-utama: #2451b3;
--warna-teks: #1f2937;
--warna-latar: #f3f4f6;
--warna-putih: #ffffff;
--jarak: 16px;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: var(--warna-teks);
background-color: var(--warna-latar);
}
header {
background-color: var(--warna-utama);
color: var(--warna-putih);
padding: var(--jarak);
}
header img {
width: 56px;
height: auto;
border-radius: 50%;
}
nav ul {
display: flex;
flex-wrap: wrap;
gap: var(--jarak);
margin: var(--jarak) 0 0;
padding: 0;
list-style: none;
}
nav a {
color: var(--warna-putih);
text-decoration: none;
font-weight: 600;
}
nav a.aktif {
text-decoration: underline;
text-underline-offset: 4px;
}
main {
max-width: 960px;
margin: 0 auto;
padding: var(--jarak);
}
section {
margin-bottom: calc(var(--jarak) * 2);
padding: var(--jarak);
background-color: var(--warna-putih);
border-radius: 8px;
}
h2 {
margin-top: 0;
color: var(--warna-utama);
}
article {
margin-top: var(--jarak);
padding-top: var(--jarak);
border-top: 1px solid #d1d5db;
}
img {
max-width: 100%;
height: auto;
}
footer {
background-color: var(--warna-utama);
color: var(--warna-putih);
}
footer p {
margin: 0;
padding: var(--jarak);
text-align: center;
}
.tombol-atas {
position: fixed;
right: 16px;
bottom: 16px;
padding: 10px 16px;
border: none;
border-radius: 6px;
background-color: var(--warna-teks);
color: var(--warna-putih);
cursor: pointer;
}Aturan nav a.aktif dan .tombol-atas dipakai mulai Bagian 4. Menuliskannya sekarang membuat stylesheet tuntas sekali jadi, tanpa perlu menyunting file yang sama di dua tahap berbeda.
Mari kita bedah aturan-aturan pentingnya:
- Blok
:root: lima custom properties — empat warna palet dan--jarak16px — yang dipakai ulang oleh seluruh aturan lain melaluivar(). - Aturan
html:scroll-behavior: smoothmenghaluskan pengguliran saat tautan anchor melompat antar-section. - Aturan universal
*denganbox-sizing: border-box: padding dan border dihitung di dalam lebar elemen, sehingga kartu tidak meluber saat diberi jarak. - Aturan header dan nav: latar biru utama dengan teks putih;
nav ulmemakai flexbox (display: flexdengangapdanflex-wrap) agar tautan sejajar dan menyesuaikan diri pada layar sempit. - Aturan main dan section: container 960px di tengah layar dan kartu putih bersudut bulat untuk setiap section.
- Aturan article: garis atas tipis (
border-top) memisahkan setiap proyek tanpa perlu elemen tambahan. - Aturan img:
max-width: 100%denganheight: automembuat gambar menyusut mengikuti wadahnya tanpa mengubah proporsi. - Aturan
.tombol-atas: tombol melayang (position: fixed) di sudut kanan bawah, selalu terjangkau di halaman panjang.
Menghubungkan Stylesheet ke Halaman #
File portofolio-styling.html pada folder bagian ini adalah portofolio-navigasi.html ditambah satu baris link di dalam head:
<link rel="stylesheet" href="../styles/style.css">Jalur ../styles/style.css dibaca relatif terhadap lokasi file HTML: keluar satu folder dari part-3-styling-dasar, lalu masuk ke folder styles. Pohon folder pada overview proyek menjaga jalur ini tetap benar.
Output yang Dihasilkan:
Tampilan halaman berubah total:
- Header dan footer berlatar biru dengan teks putih
- Tautan nav tersusun sejajar di dalam header
- Empat section tampil sebagai kartu putih di atas latar abu
- Klik tautan nav kini menggulir halaman dengan halusPemeriksaan Hasil Tahap Ini #
- Pastikan styles/style.css berada di folder proyek, lalu buka portofolio-styling.html di browser.
- Klik tautan nav “Keahlian” dan amati penggulirannya; lompatan terasa halus, bukan melompat seketika.
- Buka tests/cek-struktur.html, lalu centang butir-butir stylesheet dan tampilan yang telah dipenuhi.
Tampilan dan pengguliran telah halus. Tinggal satu lapisan tersisa: status navigasi yang ikut berubah pada Bagian 4.
Referensi resmi untuk pendalaman:
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
portofolio-styling.html
Unduh berkas<!doctype html>
<html lang="id">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Portofolio Siti Rahma, pengembang web yang fokus pada halaman cepat dan aksesibel.">
<title>Portofolio Siti Rahma</title>
<link rel="stylesheet" href="../styles/style.css">
</head>
<body>
<header>
<img src="../assets/logo.svg" alt="Logo monogram SR" width="56" height="56">
<div>
<h1>Siti Rahma</h1>
<p>Pengembang web: antarmuka cepat dan aksesibel</p>
</div>
<nav aria-label="Navigasi utama">
<ul>
<li><a href="#beranda">Beranda</a></li>
<li><a href="#proyek">Proyek</a></li>
<li><a href="#keahlian">Keahlian</a></li>
<li><a href="#kontak">Kontak</a></li>
</ul>
</nav>
</header>
<main>
<section id="beranda">
<h2>Selamat Datang</h2>
<p>Saya membangun halaman web yang rapi dari sisi struktur dan ringan dari sisi ukuran berkas. Jelajahi daftar proyek di bawah, lalu hubungi saya bila ada ide yang ingin dikembangkan bersama.</p>
<p><a href="#proyek">Lihat daftar proyek</a></p>
</section>
<section id="proyek">
<h2>Proyek Pilihan</h2>
<article>
<h3>Galeri Foto Kelas</h3>
<p>Halaman galeri untuk karya fotografi siswa, dibangun dengan figure dan img yang membawa atribut alt lengkap.</p>
<p><a href="www.example.com/galeri-foto-kelas">www.example.com/galeri-foto-kelas</a></p>
</article>
<article>
<h3>Buku Resep Dapur</h3>
<p>Kumpulan resep keluarga yang disusun per kategori dengan daftar bersarang dan tabel takaran.</p>
<p><a href="www.example.com/buku-resep">www.example.com/buku-resep</a></p>
</article>
</section>
<section id="keahlian">
<h2>Keahlian</h2>
<ul>
<li>Struktur dokumen HTML yang semantik</li>
<li>Tabel dan daftar untuk konten terstruktur</li>
<li>Optimasi gambar agar halaman tetap ringan</li>
</ul>
</section>
<section id="kontak">
<h2>Kontak</h2>
<p>Surel: <a href="mailto:[email protected]">[email protected]</a></p>
</section>
</main>
<footer>
<p>© 2025 Siti Rahma</p>
</footer>
</body>
</html>