Pembuat Formulir CSS

Hasil

Formulir adalah bagian yang paling sering digunakan di sebagian besar situs web, tetapi juga bagian yang paling kurang dirawat tampilannya. Generator ini menghasilkan CSS untuk formulir lengkap yang bergaya: grid formulir responsif, pasangan label dan bidang masukan, area teks, komponen seleksi, dan status fokus yang terlihat, semuanya dengan gaya visual yang konsisten. Atur warna aksen, radius sudut, dan jarak, lalu salin lembar gayanya. CSS ini mempertahankan semantik formulir asli, sehingga validasi, penggunaan keyboard, dan pembaca layar tetap berfungsi.

Cara menggunakan generator

  1. 1

    Atur warna aksen

    Warna aksen menentukan garis fokus dan warna tepi pada setiap bidang.

  2. 2

    Pilih radius sudut

    Radius berlaku untuk input, textarea, dan select agar semuanya memiliki bentuk yang konsisten.

  3. 3

    Atur jarak

    Jarak mengontrol spasi vertikal antar bidang pada grid formulir.

  4. 4

    Salin CSS

    Lembar gaya lengkap yang bisa Anda tempel dan sesuaikan tanpa mengubah HTML Anda.

Formulir dasar

<form class="form">
  <label class="field">
    <span class="field-label">Email</span>
    <input type="email" required>
    <span class="field-error">Please enter a valid email.</span>
  </label>

  <label class="field">
    <span class="field-label">Password</span>
    <input type="password" minlength="8" required>
  </label>

  <button type="submit" class="button">Sign up</button>
</form>
.field {
  display: block;
  margin-bottom: 1.25rem;
}
.field-label {
  display: block;
  font-weight: 500;
  margin-bottom: .25rem;
}
.field input {
  width: 100%;
  padding: .5rem .75rem;
  font: inherit;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
  transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
  border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }

Empat gaya umum

Gaya Apa itu Paling cocok untuk
Berbentuk garis Batas di sekitar bidang masukan dengan latar belakang transparan Formulir desktop dan tata letak padat
Berhias garis bawah Hanya memiliki batas bawah Antarmuka minimal/editorial
Terisi Latar belakang abu-abu, tanpa batas Antarmuka terinspirasi Material Design
Label mengapung Label terletak di dalamnya dan bergerak secara dinamis saat fokus atau nilai tertentu tercapai Desain berorientasi mobile dengan halaman pendaratan yang optimal

Label floating terlihat paling menarik, tetapi memerlukan penambahan kode markup atau JavaScript untuk mendeteksi keadaan kosong. Sementara itu, label outlined merupakan solusi yang paling universal.

Daftar periksa aksesibilitas

  • Label yang terlihat jelas untuk setiap input. Jangan pernah menggunakan placeholder sebagai satu-satunya label; label tersebut akan menghilang saat fokus ditekan dan tidak memberikan kontras yang memadai.
  • <label for> atau versi terbungkus <label>: Keduanya sah; versi terbungkus sedikit lebih mudah digunakan.
  • Indikator fokus: Jangan pernah menggunakan outline: none tanpa pengganti. Pengguna keyboard memerlukannya.
  • Pesan kesalahan: hubungkan pesan tersebut melalui aria-describedby pada masukan. Jangan hanya menggunakan warna untuk menandai kesalahan; tambahkan teks atau ikon.
  • Bidang wajib: gunakan atribut required. Tambahkan penanda visual (tanda bintang) pada label untuk pengguna yang dapat melihat.
  • Jenis input: gunakan type="email", type="tel", type="url", atau type="number"; keyboard seluler dapat menyesuaikan diri.
  • Atribut autocomplete: autocomplete="email", autocomplete="current-password", dan sebagainya; membantu pengguna menghemat waktu mengetik secara signifikan.

Status validasi asli

CSS memiliki kelas semu untuk memastikan validitas formulir:

  • :required / :optional
  • :valid / :invalid
  • :in-range / :out-of-range (untuk input numerik dengan batas minimum dan maksimum)
  • :placeholder-shown (kosong, tempat penampungan terlihat)
  • :user-invalid (tidak valid dan pengguna telah berinteraksi, yang sesuai untuk jenis kesalahan)

Kelas pseudo :user-invalid merupakan cara paling tepat untuk menampilkan kesalahan hanya setelah pengguna melakukan suatu tindakan, sehingga menghindari munculnya batas merah sebelum interaksi terjadi. Dukungan untuk fitur ini tersedia di semua versi utama sekitar tahun 2023.

Status dinonaktifkan

.field input:disabled {
  background: #f3f4f6;
  color: #9ca3af;
  cursor: not-allowed;
}

Input yang dinonaktifkan tidak dapat difokuskan maupun dikirimkan. Jika Anda ingin data tersebut dapat difokuskan oleh alat pembaca layar, gunakan readonly, formulir akan mengirimkan nilai tersebut, tetapi pengguna tidak dapat mengeditnya.

Pertanyaan yang Sering Diajukan

Tidak. Placeholder akan menghilang begitu pengguna mengetik, sehingga tidak dapat digunakan sebagai label. Selain itu, teks placeholder umumnya memiliki kontras rendah dan tidak memenuhi standar WCAG. Gunakan label yang jelas serta placeholder opsional untuk memberikan petunjuk format.

Karena :invalid langsung berlaku untuk bidang wajib yang kosong, gunakan :user-invalid (yang memperhitungkan interaksi pengguna) atau gabungkan :invalid:not(:placeholder-shown) sebagai solusi sementara pada peramban lama.

Atur appearance: none, hapus panah bawaan, lalu tambahkan panah Anda sendiri menggunakan gambar latar belakang atau elemen wrapping dengan panah pseudo-element. Daftar opsi di dalamnya tetap mengikuti tampilan bawaan sistem operasi dan tidak dapat dikustomisasi menggunakan CSS.

Keduanya. Validasi HTML (required, type, pattern) hanya cocok untuk kasus sederhana yang tidak memerlukan JavaScript. JavaScript digunakan untuk mengelola aturan kompleks, seperti kekuatan kata sandi dan ketergantungan antar bidang data. Selalu lakukan validasi di sisi server pula, validasi di sisi klien bertujuan untuk pengalaman pengguna (UX), bukan keamanan.

Alat Terkait