CSS

Proyek Akhir CSS: Buat Website Portofolio Keren

PPLG

PPLG

Penulis

04 May 2026
1 x dilihat

Halo para pembelajar CSS! Saya senang sekali bisa memandu Anda dalam sebuah proyek akhir yang akan mengukuhkan pemahaman Anda tentang CSS: membangun website portofolio sederhana namun memukau. Proyek ini dirancang untuk mengintegrasikan semua konsep CSS yang telah Anda pelajari, mulai dari dasar hingga teknik yang lebih lanjut. Mari kita ubah pengetahuan teoritis Anda menjadi karya nyata!

Mengapa Website Portofolio?

Website portofolio adalah salah satu cara terbaik untuk memamerkan keterampilan Anda sebagai pengembang web. Ini bukan hanya tentang menampilkan proyek-proyek Anda, tetapi juga menunjukkan kemampuan Anda dalam mendesain dan mengimplementasikan antarmuka pengguna yang menarik dan fungsional. Dengan menguasai CSS, Anda bisa membuat portofolio yang tidak hanya informatif tetapi juga mencerminkan kepribadian dan gaya profesional Anda.

Konsep CSS Inti yang Akan Kita Terapkan

Dalam proyek ini, kita akan menyentuh berbagai aspek CSS. Pastikan Anda familiar dengan konsep-konsep berikut:

  • Box Model: Memahami margin, border, padding, dan content adalah fundamental. Ini akan membantu kita mengatur ruang di sekitar elemen dan antar elemen.
  • Display Properties: block, inline, inline-block, flex, dan grid akan menjadi kunci untuk menata tata letak halaman Anda.
  • Positioning: static, relative, absolute, fixed, dan sticky memungkinkan Anda menempatkan elemen secara presisi.
  • Typography: Mengontrol font-family, font-size, font-weight, line-height, text-align, dan color untuk keterbacaan yang optimal.
  • Colors and Backgrounds: Penggunaan warna (color, background-color, rgba(), hsla()) dan gambar latar belakang (background-image, background-size, background-repeat).
  • Selectors: Dari yang sederhana (element, .class, #id) hingga yang lebih kompleks (attribute, pseudo-classes, pseudo-elements, combinators).
  • Responsive Design: Menggunakan Media Queries (@media) untuk memastikan tampilan portofolio Anda optimal di berbagai ukuran layar (desktop, tablet, mobile).
  • Transitions and Animations: Menambah interaktivitas dan sentuhan dinamis untuk pengalaman pengguna yang lebih baik.
  • CSS Variables (Custom Properties): Memudahkan pengelolaan nilai-nilai CSS yang berulang, seperti warna tema atau spasi.
  • Specificity and Cascade: Memahami bagaimana CSS diterapkan dan bagaimana aturan yang lebih spesifik mengesampingkan aturan yang kurang spesifik.

Langkah-langkah Praktis: Membangun Website Portofolio Anda

Mari kita mulai proses kreatifnya!

1. Perencanaan dan Struktur HTML

Sebelum menulis satu baris CSS pun, buatlah rencana kasar tentang apa saja yang ingin Anda tampilkan:

  • Header: Nama, jabatan/profesi, tautan navigasi.
  • About Section: Deskripsi singkat tentang diri Anda, keahlian, dan minat.
  • Projects Section: Daftar proyek Anda, masing-masing dengan judul, deskripsi singkat, dan tautan ke demo/repositori.
  • Contact Section: Informasi kontak, formulir kontak sederhana (opsional).
  • Footer: Hak cipta, tautan media sosial.

Buat struktur HTML yang semantik dan terorganisir. Gunakan tag-tag seperti <header>, <nav>, <main>, <section>, <article>, <footer>, <h1> hingga <h6>, <p>, <ul>, <li>, <a>.

Contoh Struktur HTML Sederhana:

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nama Anda - Portofolio</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1>Nama Anda</h1>
        <p>Seorang Web Developer Kreatif</p>
        <nav>
            <ul>
                <li><a href="#about">Tentang Saya</a></li>
                <li><a href="#projects">Proyek</a></li>
                <li><a href="#contact">Kontak</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id="about">
            <h2>Tentang Saya</h2>
            <img src="foto-profil.jpg" alt="Foto Profil Anda" class="profile-pic">
            <p>Saya adalah seorang pengembang web yang bersemangat...</p>
        </section>

        <section id="projects">
            <h2>Proyek Saya</h2>
            <div class="project-list">
                <article class="project-item">
                    <h3>Judul Proyek 1</h3>
                    <img src="thumbnail-proyek1.jpg" alt="Thumbnail Proyek 1">
                    <p>Deskripsi singkat proyek...</p>
                    <a href="#">Lihat Detail</a>
                </article>
                <article class="project-item">
                    <h3>Judul Proyek 2</h3>
                    <img src="thumbnail-proyek2.jpg" alt="Thumbnail Proyek 2">
                    <p>Deskripsi singkat proyek...</p>
                    <a href="#">Lihat Detail</a>
                </article>
                <!-- Tambahkan proyek lain -->
            </div>
        </section>

        <section id="contact">
            <h2>Hubungi Saya</h2>
            <p>Anda bisa menghubungi saya melalui:</p>
            <ul>
                <li>Email: <a href="mailto:emailanda@example.com">emailanda@example.com</a></li>
                <li>LinkedIn: <a href="#">Profil LinkedIn</a></li>
            </ul>
        </section>
    </main>

    <footer>
        <p>&copy; 2023 Nama Anda. Hak Cipta Dilindungi.</p>
    </footer>

    <script src="script.js"></script> <!-- Jika menggunakan JavaScript -->
</body>
</html>

2. Styling Dasar dan Typography

Mulai dengan mengatur body dan elemen-elemen dasar. Gunakan CSS Reset (atau Normalize.css) untuk memastikan konsistensi tampilan di berbagai browser.

File: style.css

/* CSS Reset Sederhana */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* Variabel CSS untuk Tema */
:root {
    --primary-color: #333;
    --secondary-color: #eee;
    --accent-color: #007bff;
    --background-color: #f4f4f4;
    --text-color: #333;
    --link-color: #007bff;
    --link-hover-color: #0056b3;
    --font-family-base: 'Arial', sans-serif;
    --font-family-heading: 'Georgia', serif;
    --spacing-unit: 1rem;
}

body {
    font-family: var(--font-family-base);
    line-height: 1.6;
    color: var(--text-color);
    background-color: var(--background-color);
    padding: 0 var(--spacing-unit); /* Tambahkan sedikit padding di sisi */
}

h1, h2, h3 {
    font-family: var(--font-family-heading);
    margin-bottom: var(--spacing-unit);
}

h1 {
    font-size: 2.5rem;
}

h2 {
    font-size: 2rem;
    text-align: center; /* Rata tengah untuk judul bagian */
    margin-top: calc(var(--spacing-unit) * 2); /* Jarak lebih besar dari bagian */
}

p {
    margin-bottom: var(--spacing-unit);
}

a {
    color: var(--link-color);
    text-decoration: none;
}

a:hover {
    color: var(--link-hover-color);
    text-decoration: underline;
}

img {
    max-width: 100%; /* Pastikan gambar responsif */
    height: auto;
}

3. Styling Header dan Navigasi

Mari kita buat header yang menarik dan navigasi yang fungsional.

File: style.css (lanjutan)

header {
    background-color: var(--primary-color);
    color: var(--secondary-color);
    padding: calc(var(--spacing-unit) * 2) 0;
    text-align: center;
    margin-bottom: calc(var(--spacing-unit) * 2);
}

header h1 {
    margin-bottom: 0.5rem;
    font-size: 3rem;
}

header p {
    font-size: 1.2rem;
    margin-bottom: var(--spacing-unit);
}

nav ul {
    list-style: none;
}

nav ul li {
    display: inline-block; /* Menampilkan item navigasi berjajar */
    margin: 0 calc(var(--spacing-unit) / 2);
}

nav ul li a {
    color: var(--secondary-color);
    font-weight: bold;
    padding: 0.5rem 1rem;
    transition: background-color 0.3s ease; /* Transisi halus untuk hover */
}

nav ul li a:hover {
    background-color: var(--accent-color);
    border-radius: 4px;
    text-decoration: none;
}

4. Mengatur Tata Letak dengan Flexbox/Grid

Bagian "Tentang Saya" dan "Proyek" akan mendapat manfaat besar dari Flexbox atau Grid.

File: style.css (lanjutan)

#about {
    display: flex; /* Menggunakan Flexbox */
    align-items: center; /* Menyelaraskan item secara vertikal di tengah */
    gap: calc(var(--spacing-unit) * 2); /* Jarak antar item */
    flex-wrap: wrap; /* Memungkinkan item pindah baris jika layar kecil */
    justify-content: center; /* Menyelaraskan item di tengah secara horizontal */
    text-align: left; /* Mengatur ulang text-align untuk paragraf */
    margin-bottom: calc(var(--spacing-unit) * 2);
}

.profile-pic {
    width: 150px; /* Ukuran spesifik untuk foto profil */
    height: 150px;
    border-radius: 50%; /* Membuat foto profil bulat */
    object-fit: cover; /* Memastikan gambar mengisi ruang tanpa distorsi */
    border: 3px solid var(--accent-color); /* Tambahkan border pada foto */
}

#about .content { /* Asumsikan kita membungkus teks di div dengan class 'content' */
    flex: 1; /* Mengambil ruang yang tersedia */
    min-width: 300px; /* Lebar minimum agar tidak terlalu sempit */
}

#about h2 {
    text-align: left; /* Rata kiri untuk judul section ini */
    margin-top: 0; /* Menghilangkan margin atas agar lebih rapat dengan foto */
}

.project-list {
    display: grid; /* Menggunakan Grid untuk tata letak proyek */
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); /* Kolom responsif */
    gap: calc(var(--spacing-unit) * 2);
    justify-items: center; /* Menyelaraskan item di tengah kolom */
}

.project-item {
    background-color: white;
    padding: var(--spacing-unit);
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* Bayangan halus */
    text-align: center;
    width: 100%;
    max-width: 350px; /* Batasi lebar maksimum setiap item proyek */
}

.project-item h3 {
    margin-top: 0;
    color: var(--accent-color);
}

.project-item img {
    margin-bottom: var(--spacing-unit);
    border-radius: 4px;
}

5. Styling Kontak dan Footer

Pastikan bagian kontak mudah dibaca dan footer memberikan informasi yang jelas.

File: style.css (lanjutan)

#contact {
    text-align: center;
    margin-top: calc(var(--spacing-unit) * 3);
    margin-bottom: calc(var(--spacing-unit) * 3);
}

#contact ul {
    list-style: none;
    padding: 0;
}

#contact ul li {
    margin-bottom: calc(var(--spacing-unit) / 2);
}

footer {
    background-color: var(--primary-color);
    color: var(--secondary-color);
    text-align: center;
    padding: var(--spacing-unit);
    margin-top: calc(var(--spacing-unit) * 2);
}

6. Menerapkan Responsive Design dengan Media Queries

Ini adalah bagian krusial untuk membuat portofolio Anda dapat diakses di semua perangkat.

File: style.css (lanjutan)

/* Media Queries untuk perangkat tablet (misal, lebar layar kurang dari 768px) */
@media (max-width: 768px) {
    h1 {
        font-size: 2.2rem;
    }

    h2 {
        font-size: 1.8rem;
    }

    header p {
        font-size: 1rem;
    }

    nav ul li {
        display: block; /* Item navigasi menjadi satu kolom */
        margin: 0.5rem 0;
    }

    #about {
        flex-direction: column; /* Item akan bertumpuk secara vertikal */
        text-align: center; /* Rata tengah untuk semua teks di bagian ini */
    }

    .profile-pic {
        margin-bottom: var(--spacing-unit); /* Beri jarak di bawah foto */
    }

    .project-list {
        grid-template-columns: 1fr; /* Hanya satu kolom untuk proyek */
    }
}

/* Media Queries untuk perangkat mobile (misal, lebar layar kurang dari 480px) */
@media (max-width: 480px) {
    h1 {
        font-size: 1.8rem;
    }

    h2 {
        font-size: 1.5rem;
    }

    header {
        padding: 1.5rem 0;
    }

    body {
        padding: 0 0.5rem; /* Kurangi padding horizontal */
    }
}

7. Menambahkan Transitions dan Pseudo-elements/classes

Mari kita tambahkan sedikit sentuhan dinamis.

File: style.css (lanjutan)

/* Tambahkan hover effect pada item proyek yang lebih interaktif */
.project-item {
    /* ... properti sebelumnya ... */
    transition: transform 0.3s ease, box-shadow 0.3s ease; /* Animasi untuk transform dan shadow */
}

.project-item:hover {
    transform: translateY(-5px); /* Menggeser item ke atas sedikit */
    box-shadow: 0 10px 20px rgba(0,0,0,0.2); /* Bayangan lebih menonjol */
}

/* Tambahkan efek pada tautan di dalam proyek */
.project-item a {
    display: inline-block;
    margin-top: var(--spacing-unit);
    padding: 0.5rem 1rem;
    background-color: var(--accent-color);
    color: white;
    border-radius: 4px;
    transition: background-color 0.3s ease;
}

.project-item a:hover {
    background-color: var(--link-hover-color);
    text-decoration: none;
}

/* Efek hover pada gambar proyek */
.project-item img {
    transition: transform 0.3s ease;
}

.project-item:hover img {
    transform: scale(1.03); /* Sedikit memperbesar gambar */
}

Tips Praktis yang Jarang Diketahui Pemula:

  • Menggunakan rem vs em: Gunakan rem untuk ukuran font global dan spasi agar lebih mudah dikelola dan diskalakan. em lebih baik digunakan untuk elemen yang bergantung pada ukuran font induknya.
  • gap pada Flexbox dan Grid: Properti gap adalah cara modern dan efisien untuk mengatur spasi antar item Flexbox atau Grid, menggantikan penggunaan margin pada setiap item.
  • object-fit untuk Gambar: Saat menggunakan <img> dalam wadah dengan ukuran tetap, object-fit: cover; atau object-fit: contain; adalah penyelamat untuk memastikan gambar terlihat bagus tanpa distorsi, terutama untuk gambar profil atau thumbnail.
  • Manfaatkan currentColor: Untuk ikon SVG atau elemen lain yang warnanya perlu disesuaikan dengan warna teks sekitarnya, gunakan color: currentColor;.
  • Organisasi CSS: Dengan menggunakan variabel CSS, pengelompokan gaya berdasarkan bagian, dan komentar yang jelas, Anda membuat codebase CSS yang lebih mudah dipelihara.
  • Browser Developer Tools: Jangan ragu untuk menggunakan F12 di browser Anda. Ini adalah alat paling ampuh untuk men-debug, melihat bagaimana CSS diterapkan, dan bereksperimen dengan perubahan gaya secara langsung.

Kesimpulan

Membuat website portofolio adalah proyek akhir yang fantastis untuk menguji dan memperkuat pemahaman Anda tentang CSS. Dengan menerapkan konsep seperti Box Model, Flexbox/Grid, Responsive Design, dan sentuhan animasi, Anda tidak hanya membangun sebuah situs web fungsional tetapi juga sebuah karya seni digital yang mewakili keahlian Anda. Teruslah berlatih, bereksperimen, dan jangan takut untuk mencoba teknik baru!

0.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Pembaca (0)

Belum ada user yang membaca artikel ini.