Slicing Figma to HTML dengan Tailwind CSS - Login Page
Slicing Figma to HTML dengan Tailwind CSS - Login Page Pernah lihat desain keren di Figma dan bingung mulai dari mana untuk nge-slice jadi HTML? Artikel ini bakal kasih contoh step-by-step nyusun layout login page modern pakai Tailwind CSS. Kita mulai dari satu kasus nyata: sebuah desain halaman login yang sudah siap di Figma dan tinggal dikonversi ke HTML fungsional. Nah, di sinilah proses slicing berperan penting—mengubah desain visual menjadi tampilan nyata menggunakan Tailwind CSS versi 4. Dengan pendekatan utility-first Tailwind, kita bisa membangun antarmuka yang cepat, konsisten, dan efisien. Dalam tutorial ini, kita akan pelajari langkah-langkah melakukan slicing Figma ke HTML untuk halaman login, dimulai dari persiapan file desain, penyusunan struktur HTML, hingga penerapan utility classes yang tepat. Panduan ini ditujukan untuk siapa saja yang ingin mengefisienkan proses konversi desain ke kode menggunakan Tailwind CSS V4. Yuk kita mulai! Menyiapkan desain figma dan instalasi tailwind Sebelum mulai proses slicing, pastikan semua bahan sudah siap. Kalian bisa membuka desain halaman login di Figma yang dapat di download melalui Shaynakit dan langsung mengekspor aset yang dibutuhkan, seperti logo atau ilustrasi, sesuai kebutuhan layout. Untuk icon disarankan export sebagai .svg dan untuk gambar bisa .png. Untuk Tailwind CSS, ada dua opsi: gunakan CDN untuk setup cepat, atau instal menggunakan Tailwind CLI dengan mengikuti dokumentasi resminya. Pilih metode yang paling sesuai dengan workflow kalian. Setelah aset diekspor, simpan ke dalam folder assets/images/ sesuai struktur proyek. Jika kalian menggunakan struktur folder sendiri, pastikan untuk menyesuaikan path file-nya agar tidak terjadi error saat implementasi di HTML. Contoh struktur folder yang digunakan. Slicing Figma to Html Setelah file dan setup Tailwind CSS siap, langkah berikutnya adalah memastikan semuanya berjalan dengan baik. Coba jalankan contoh template HTML dasar dari dokumentasi Tailwind di browser untuk memastikan Tailwind sudah terintegrasi dengan benar. Jika semuanya sudah berfungsi sebagaimana mestinya, saatnya kita mulai proses slicing. Kita akan mulai menyusun struktur HTML sesuai desain login page dari Figma. Layout dan style dasar Sebelum masuk ke layout, kita perlu mengatur tampilan dasar yang berlaku secara global—semacam style fondasi untuk seluruh halaman. Mulai dari font-family, warna latar belakang, warna teks, hingga pengaturan dasar pada elemen <body>. Ini penting supaya tampilan antarmuka tetap konsisten dengan desain Figma. body { font-family: "Lexend Deca", sans-serif; background-color: #F3F5F9; color: #292D32; } Style di atas disesuaikan langsung dari desain Figma—baik jenis font, warna latar, maupun warna teks utama. Selanjutnya, kita modifikasi file index.html agar tampak seperti berikut: <!doctype html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="./output.css" rel="stylesheet" /> <!-- Load font Lexend Deca dari Google Fonts --> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Lexend+Deca:[email protected]&display=swap" rel="stylesheet" /> </head> <body> <div class="flex"> <!-- Komponen login akan ditempatkan di sini --> </div> </body> </html> Di bagian <head>, kita menambahkan CDN untuk mengimpor font Lexend Deca dari Google Fonts. Sementara itu, <div class="flex"> akan menjadi wadah utama tempat semua komponen login disusun nantinya. Membuat halaman login Jika kita perhatikan desain di Figma, bagian kiri halaman login berisi elemen visual berupa teks dan gambar dekoratif. Elemen ini berfungsi sebagai pemanis dan pengisi ruang kosong, memberikan kesan profesional pada layout. Untuk membuatnya, kita akan membagi area tersebut menjadi dua bagian utama: Teks bagian atas — terdiri dari heading dan subheading.Container gambar — sebagai elemen visual di bagian bawah. Mulailah dengan struktur HTML dasar berikut: <div class="flex flex-col"> <p>— Manage Stock and Merchants</p> <p>Optimized Inventory,<br />Effortless Workflow 🎯</p> <div> <img src="" alt="image" /> </div> </div> Tampilan konten awal. Selanjutnya, kita akan menambahkan kelas Tailwind CSS sesuai dengan desain yang ada di Figma. Berikut tampilan akhir dari parent container-nya: <div class="flex flex-col h-screen overflow-hidden rounded-tr-[32px] pl-[30px] pt-[46px] w-[685px] shrink-0 bg-[linear-gradient(336.99deg,#0a3a89_0%,#1053d5_100%)]"> Tambahkan juga styling pada teks agar sesuai dengan desain: <p class="font-semibold text-lg text-[#deff6e]">— Manage Stock and Merchants</p> <p class="font-extrabold text-[42px] uppercase text-white mt-4 mb-[30px]"> Optimized Inventory,<br /> Effortless Workflow 🎯 </p> Jika diimplementasikan dengan benar, tampilannya akan menyerupai desain berikut: Tampilan bagian kiri setelah diberi style. Menambahkan gambar Selanjutnya, kita masuk kebagian gambar. Export gambar dengan settingan PNG dengan resolusi 3x agar kualitas gambar tetap terjaga dan tajam walau dilihat pada layar dengan resolusi lebih tinggi dari design figma, atau teman teman bisa mendownloadnya dari link asset yang sudah disedaikan sebelumnya. berikut contohnya. Untuk bagian gambar, ekspor langsung dari Figma dalam format PNG dengan resolusi 3x agar tampil tajam bahkan di layar beresolusi tinggi. Simpan gambar ke dalam folder assets/images/backgrounds/ agar lebih mudah dikelola. Gunakan gambar tersebut di HTML dengan struktur berikut: export gambar tersebut kedalam folder assets/iamges/backgrounds agar kita mudah menemukannya. pada index.html. Gunakan gambar tersebut kemudian berikan style pada container gambar itu seperti dibawah ini. <div class="flex flex-1 overflow-hidden rounded-tl-[20px]"> <img src="assets/images/backgrounds/bg-image-1.png" alt="image" /> </div> Namun, kamu mungkin akan mengalami masalah pada tampilan saat layar berbeda ukurannya dari desain Figma. Contohnya seperti ini: Tampilan setelah diberi gambar dan kondisi gambar tidak responsive. Kiri: Gambar terlalu kecil karena tinggi container disesuaikan.Kanan: Gambar tertarik secara vertikal hingga tampak distorted. Untuk mengatasi ini, tambahkan class Tailwind berikut pada elemen <img>: <img src="assets/images/backgrounds/bg-image-1.png" class="size-full object-cover object-left-top" alt="image"> Dengan object-cover, gambar akan selalu menutupi seluruh container tanpa distorsi, meskipun sebagian sisi gambar mungkin terpotong. Hasil akhirnya akan seperti ini: Tampilan gambar setelah diberikan style agar responsive. Walaupun sebagian gambar terpotong, tampilannya tetap bersih, proporsional, dan tidak terlihat pecah ataupun memanjang secara tidak wajar. Form login Sekarang kita akan masuk ke bagian yang lebih kompleks: form login. Jika kita lihat desain di Figma, ada perbedaan tampilan pada elemen input ketika sudah diisi dan ketika kosong. Selain itu, juga ada fitur untuk melihat password yang diketik. Jangan khawatir, kita akan bahas semuanya secara detail untuk membuat desain ini sesuai dengan yang ada di Figma. Yuk, kita mulai! Seperti pada bagian sebelumnya, kita akan menambahkan struktur elemen HTML. Namun kali ini, beberapa elemen sudah memiliki style default yang cukup sederhana agar tutorial ini tidak terlalu panjang atau membosankan. <div class="flex flex-1 items-center justify-center"> <form action="overview.html" class="flex flex-col w-[435px] shrink-0 rounded-3xl gap-10 p-6 bg-white"> <img src="assets/images/logos/logo.svg" class="w-[203px] mx-auto" alt="logo" /> <div class="flex flex-col gap-[30px]"> <div class="flex flex-col gap-3 text-center"> <p class="font-semibold text-2xl">Hey🙌🏻, Welcome Back!</p> <p class="font-medium text-[#6a7686]">Login to your account to continue!</p> </div> <div id="Input-Container" class="flex flex-col gap-4 w-full"> <!-- Input --> <p class="font-medium text-sm text-[#6a7686]"> Forget Password? <a href="#" class="font-semibold text-[#1053d5] hover:underline">Reset Password</a> </p> </div> <button type="submit" class="btn btn-primary w-full font-bold">Sign In</button> </div> </form> </div> Jika sudah mengikuti langkah ini, tampilan form login seharusnya terlihat seperti gambar berikut: Tampilan form login pada bagian kanan. Menambahkan input email Sekarang, mari kita fokus pada elemen input. Kita mulai dengan membuat input untuk email. Berikut struktur dasar HTML untuk input email: <label> <div> <img src="assets/images/icons/sms-grey.svg" class="flex size-6 shrink-0" alt="icon" /> </div> <p class="placeholder">Your email address</p> <input type="email" class="" placeholder="" /> </label> Penjelasan: Label: Semua elemen input dibungkus dalam elemen <label> agar saat area input diklik, kita bisa langsung fokus dan mulai mengetik.Icon: Kita letakkan ikon di dalam div terpisah dan posisikan secara absolute agar tetap konsisten di posisi kiri input.Placeholder: Di desain Figma, placeholder akan berpindah ke atas ketika input terisi, sehingga kita menggunakan elemen terpisah untuk placeholder ini agar lebih mudah di-styling. Sekarang, kita tambahkan style pada elemen input tersebut agar sesuai dengan desain Figma: <label class="relative"> <div class="flex items-center pr-4 absolute transform -translate-y-1/2 top-1/2 left-6 border-r-[1.5px] border-[#e8e8e8]"> <img src="assets/images/icons/sms-grey.svg" class="flex size-6 shrink-0" alt="icon" /> </div> <p class="placeholder font-medium text-[#6a7686] text-sm absolute -translate-y-1/2 left-[81px] top-1/2"> Your email address </p> <input type="email" class="appearance-none w-full h-[72px] font-semibold text-lg rounded-3xl border-[1.5px] border-[#e8e8e8] pl-20 pr-6 pb-[14.5px] pt-[14.5px]" placeholder="" /> </label> Penjelasan Styling: Label: Diberikan class .relative agar elemen-elemen di dalamnya bisa diposisikan relatif terhadap label.Icon: Gambar ikon diletakkan dengan menggunakan class absolute, diatur di sebelah kiri input dengan border separator.Placeholder: Diberikan class absolute untuk memindahkan posisi placeholder ke atas saat input terisi, menggunakan warna dan ukuran teks sesuai dengan desain.Input Field: Input email diberi styling agar sesuai dengan desain Figma, menggunakan border, padding, dan font yang konsisten. Dengan penerapan tersebut, tampilan input email akan seperti berikut: Tampilan input email tahap awal. Mengatasi Masalah Placeholder yang Tindih namun ada masalah ketika ada input dari user, placeholder dan input saling tindih tidak seperti pada design figma. berikut solusinya, pertama kita akan menggunakan fitur “group” dari tailwind css. Fitur ini memungkinkan kita untuk mengatur style berdasarkan kondisi atau state dari child dalam suatu group atau untuk group itu sendiri. Langkah pertama adalah tambahkan .group ke <label> seperti contoh berikut Sebelumnya kita sudah menambahkan elemen input untuk email, namun ada masalah saat pengguna mulai mengetik—placeholder dan teks input saling tumpang tindih, yang tidak sesuai dengan desain Figma. Untuk mengatasi masalah ini, kita akan menggunakan fitur “group” dari Tailwind CSS. Fitur ini memungkinkan kita untuk mengatur style berdasarkan kondisi atau state dari child dalam suatu group, atau untuk group itu sendiri. Langkah pertama adalah menambahkan class .group ke elemen <label> untuk membuat semua child element dari label tersebut menjadi satu group. <label class="group relative"> Dengan menggunakan class .group, kita bisa menerapkan style kondisional pada elemen di dalamnya berdasarkan state grup tersebut. Menambahkan Transisi untuk Placeholder Untuk memastikan placeholder bergerak dengan mulus saat pengguna mulai mengetik, kita perlu mengatur posisi top placeholder agar bisa berubah. Kita akan memanfaatkan fitur Tailwind placeholder-shown: untuk mendeteksi apakah elemen input sedang kosong atau sudah diisi. Namun, karena kita menggunakan elemen <p> untuk placeholder (bukan atribut placeholder pada <input>), kita akan menggabungkan group-has-placeholder-shown: untuk mendeteksi perubahan pada elemen input di dalam grup tersebut. Berikut solusinya untuk elemen placeholder: <p class="placeholder font-medium text-[#6a7686] text-sm absolute -translate-y-1/2 left-[81px] top-[25px] group-has-placeholder-shown:top-1/2 transition-all duration-300"> Your email address </p> Perubahan yang kita buat: Ganti class top-1/2 menjadi top-[25px] group-has-placeholder-shown:top-1/2, agar posisi default placeholder berada di 25px, yaitu posisi saat placeholder geser ke atas. Namun, selama input belum menerima inputan dari user, posisi top akan berada di 50% atau di tengah.Gunakan transition-all duration-300 untuk memberi efek transisi yang halus saat placeholder bergerak. Jika sudah sesuai, maka tampilan input saat user mulai mengetik akan terlihat seperti ini: Tampilan input email dengan placeholder yang sudah sesuai pada tempatnya. Menambahkan Transisi untuk Input Sekarang, mari kita atur padding pada elemen input agar teks input tidak bertabrakan dengan placeholder yang sudah dipindahkan. Kenapa padding? bukan top seperti elemen placeholder, hal ini dikarenakan elemen <input> memenuhi ruang <label> sehingga untuk menggeser text kebawah kita perlu mengubah paddingnya. Ubah elemen input menjadi seperti berikut: <input type="email" class="appearance-none w-full h-[72px] font-semibold text-lg rounded-3xl border-[1.5px] border-[#e8e8e8] pl-20 pr-6 pb-[14.5px] pt-[34.5px] placeholder-shown:pt-[14.5px] focus:border-[#292d32] transition-300" placeholder="" > Konsepnya masih sama dengan elemen .placeholder, namun disini yang kita ubah adalah padding untuk menggeser text inputan dari userke bawah. Tidak hanya itu, pada <input> kita juga tidak menggunakan group-has- karena cukup mendeteksi perbuhan dari elemen <input> itu sendiri dan tidak bergantung pada group. Jika sudah benar, maka tampilan input saat pengguna mengetik akan seperti berikut: Tampilan input email yang telah diberi style dan animasi sesuai figma. Menambahkan Input Password dan Fitur Menampilkan Password Sekarang kita akan menambahkan input password. Caranya hampir sama dengan input email, namun kita juga menambahkan tombol untuk melihat password yang diketik. Berikut adalah struktur HTML untuk input password: <label class="group relative"> <div class="flex items-center pr-4 absolute transform -translate-y-1/2 top-1/2 left-6 border-r-[1.5px] border-[#e8e8e8] "> <img src="assets/images/icons/lock-grey.svg" class="flex size-6 shrink-0" alt="icon"> </div> <p class="placeholder font-medium text-[#6a7686] text-sm absolute -translate-y-1/2 left-[81px] top-[25px] group-has-placeholder-shown:top-[36px] group-focus-within:top-[25px] transition-all duration-300"> Your password </p> <input id="passwordInput" type="password" class="appearance-none w-full h-[72px] font-semibold text-lg rounded-3xl border-[1.5px] border-[#e8e8e8] pl-20 pr-16 pb-[14.5px] pt-[34.5px] placeholder-shown:pt-[14.5px] focus:border-[#292d32] transition-300 tracking-[0.3em]" placeholder=""> <button id="togglePassword" type="button" class="absolute transform -translate-y-1/2 top-1/2 right-6"> <img src="assets/images/icons/eye-grey.svg" class="flex size-6 shrink-0" alt="icon"> </button> </label> Perubahan utama adalah penambahan tombol di sebelah kanan input untuk melihat password, serta padding tambahan pada input untuk memberi ruang bagi tombol tersebut. const passwordInput = document.getElementById('passwordInput'); const toggleBtn = document.getElementById('togglePassword'); toggleBtn.addEventListener('click', () => { const isPassword = passwordInput.type === 'password'; passwordInput.type = isPassword ? 'text' : 'password'; }); Simpan kode ini dalam file .js terpisah atau masukkan langsung di dalam tag <script> pada template HTML kita. Dengan komponen input yang sudah selesai, kita resmi menyelesaikan proses slicing form login sesuai desain di Figma—mulai dari struktur HTML, styling menggunakan Tailwind CSS, hingga interaksi dasar seperti placeholder dinamis dan toggle visibility pada password. Untuk saat ini, kita memang hanya fokus pada bagian frontend statis tanpa menyentuh responsif atau logika backend. Tapi dari sini, kamu sudah punya fondasi visual yang solid untuk melangkah lebih jauh jika dibutuhkan. Jangan ragu untuk eksplorasi atau sesuaikan lebih lanjut dengan kebutuhan project-mu. Tampilan akhir dari slicing figma to html halaman login. Penutup dan Saran Slicing desain Figma ke dalam bentuk HTML statis menggunakan Tailwind CSS memang terlihat sederhana, tapi sebenarnya mengajarkan banyak hal penting: mulai dari pemahaman struktur HTML yang rapi, teknik positioning yang presisi, hingga interaksi UI seperti placeholder dinamis dan fitur show/hide password. Dengan pendekatan ini, kamu sudah punya fondasi kuat untuk membangun antarmuka login yang profesional dan siap dikembangkan lebih lanjut, baik dari sisi responsif maupun backend-nya di kemudian hari. Namun, belajar secara mandiri tentu tidak selalu mudah—terkadang justru bikin frustrasi karena terlalu banyak hal teknis yang harus dikuasai sekaligus. Untuk itu, kami merekomendasikan kamu untuk belajar langsung bersama mentor expert di BuildWithAngga. Melalui program mentoring di BuildWithAngga, kamu bisa mendapatkan: ✅ Akses Materi Seumur Hidup – Belajar kapan pun tanpa batas waktu. ✅ Sertifikat Resmi – Validasi skill kamu di mata recruiter atau klien. ✅ Portfolio Nyata – Mengerjakan project dengan standar industri. ✅ Akses Komunitas dan Mentor – Diskusi langsung dengan praktisi yang berpengalaman. Jangan ragu untuk ambil langkah lebih jauh. Bangun fondasi yang kuat hari ini, dan siapkan dirimu untuk tantangan yang lebih besar di dunia web development. 🚀