Contoh dan panduan penggunaan untuk gaya kontrol formulir, opsi tata letak, dan komponen kustom untuk membuat berbagai macam formulir.
Ringkasan
Kontrol formulir Bootstrap memperluas gaya formulir Reboot kami dengan kelas. Gunakan kelas ini untuk memilih tampilan yang disesuaikan untuk rendering yang lebih konsisten di seluruh browser dan perangkat.
Pastikan untuk menggunakan typeatribut yang sesuai pada semua input (misalnya, emailuntuk alamat email atau numberuntuk informasi numerik) untuk memanfaatkan kontrol input yang lebih baru seperti verifikasi email, pemilihan nomor, dan banyak lagi.
Berikut adalah contoh cepat untuk mendemonstrasikan gaya formulir Bootstrap. Teruslah membaca untuk dokumentasi tentang kelas yang diperlukan, tata letak formulir, dan banyak lagi.
Kontrol formulir
Kontrol bentuk tekstual—seperti <input>s, <select>s, dan <textarea>s—digayakan dengan .form-controlkelas. Termasuk adalah gaya untuk penampilan umum, status fokus, ukuran, dan banyak lagi.
Pastikan untuk menjelajahi formulir khusus kami untuk gaya lebih lanjut <select>.
Untuk input file, tukar .form-controluntuk .form-control-file.
Perekat
Atur ketinggian menggunakan kelas seperti .form-control-lgdan .form-control-sm.
Baca saja
Tambahkan readonlyatribut boolean pada input untuk mencegah modifikasi nilai input. Input read-only tampak lebih ringan (seperti input yang dinonaktifkan), tetapi tetap menggunakan kursor standar.
Hanya baca teks biasa
Jika Anda ingin <input readonly>elemen dalam formulir Anda ditata sebagai teks biasa, gunakan .form-control-plaintextkelas untuk menghapus gaya bidang formulir default dan mempertahankan margin dan padding yang benar.
Masukan Rentang
Setel input rentang yang dapat digulir secara horizontal menggunakan .form-control-range.
Kotak centang dan radio
Kotak centang dan radio default ditingkatkan dengan bantuan .form-check, satu kelas untuk kedua jenis input yang meningkatkan tata letak dan perilaku elemen HTML mereka . Kotak centang adalah untuk memilih satu atau beberapa opsi dalam daftar, sedangkan radio untuk memilih satu opsi dari banyak.
Kotak centang dan radio yang dinonaktifkan didukung. Atribut disabledakan menerapkan warna yang lebih terang untuk membantu menunjukkan status input.
Kotak centang dan tombol radio mendukung validasi formulir berbasis HTML dan memberikan label yang ringkas dan mudah diakses. Dengan demikian, <input>s dan <label>s kami adalah elemen saudara yang bertentangan dengan an <input>di dalam a <label>. Ini sedikit lebih bertele-tele karena Anda harus menentukan iddan foratribut untuk menghubungkan <input>dan <label>.
Default (bertumpuk)
Secara default, sejumlah kotak centang dan radio yang merupakan saudara langsung akan ditumpuk secara vertikal dan diberi spasi yang sesuai dengan .form-check.
Di barisan
Kelompokkan kotak centang atau radio pada baris horizontal yang sama dengan menambahkan .form-check-inlineke sembarang .form-check.
Tanpa label
Tambahkan .position-staticke input di dalamnya .form-checkyang tidak memiliki teks label. Ingatlah untuk tetap memberikan beberapa bentuk label untuk teknologi bantu (misalnya, menggunakan aria-label).
Tata Letak
Karena Bootstrap berlaku display: blockdan width: 100%untuk hampir semua kontrol formulir kami, formulir secara default akan menumpuk secara vertikal. Kelas tambahan dapat digunakan untuk memvariasikan tata letak ini berdasarkan per-form.
Bentuk grup
Kelas .form-groupadalah cara termudah untuk menambahkan beberapa struktur ke formulir. Ini menyediakan kelas fleksibel yang mendorong pengelompokan label, kontrol, teks bantuan opsional, dan pesan validasi formulir yang tepat. Secara default ini hanya berlaku margin-bottom, tetapi mengambil gaya tambahan .form-inlinesesuai kebutuhan. Gunakan dengan <fieldset>s, <div>s, atau hampir semua elemen lainnya.
Bentuk kisi-kisi
Bentuk yang lebih kompleks dapat dibangun menggunakan kelas grid kami. Gunakan ini untuk tata letak formulir yang memerlukan beberapa kolom, lebar bervariasi, dan opsi perataan tambahan.
Baris formulir
.rowAnda juga dapat menukar .form-row, variasi baris kisi standar kami yang menggantikan talang kolom default untuk tata letak yang lebih rapat dan lebih ringkas.
Tata letak yang lebih kompleks juga dapat dibuat dengan sistem grid.
Bentuk horisontal
Buat formulir horizontal dengan kisi dengan menambahkan .rowkelas untuk membentuk grup dan menggunakan .col-*-*kelas untuk menentukan lebar label dan kontrol Anda. Pastikan untuk menambahkan s .col-form-labelAnda <label>juga sehingga mereka dipusatkan secara vertikal dengan kontrol formulir yang terkait.
Terkadang, Anda mungkin perlu menggunakan utilitas margin atau padding untuk membuat keselarasan sempurna yang Anda butuhkan. Misalnya, kami telah menghapus padding-toplabel input radio bertumpuk untuk menyelaraskan garis dasar teks dengan lebih baik.
Ukuran label bentuk horizontal
Pastikan untuk menggunakan .col-form-label-smatau .col-form-label-lgke <label>s atau <legend>s Anda untuk mengikuti ukuran .form-control-lgdan .form-control-sm.
Ukuran kolom
Seperti yang ditunjukkan pada contoh sebelumnya, sistem grid kami memungkinkan Anda untuk menempatkan sejumlah .cols dalam .rowatau .form-row. Mereka akan membagi lebar yang tersedia secara merata di antara mereka. Anda juga dapat memilih subset kolom Anda untuk mengambil lebih banyak atau lebih sedikit ruang, sementara sisa .cols membagi sisanya secara merata, dengan kelas kolom tertentu seperti .col-7.
Ukuran otomatis
Contoh di bawah ini menggunakan utilitas flexbox untuk memusatkan konten secara vertikal dan mengubahnya .colsehingga .col-autokolom Anda hanya menggunakan ruang sebanyak yang diperlukan. Dengan kata lain, ukuran kolom itu sendiri berdasarkan isinya.
Anda kemudian dapat mencampurnya sekali lagi dengan kelas kolom khusus ukuran.
Gunakan .form-inlinekelas untuk menampilkan serangkaian label, kontrol formulir, dan tombol pada satu baris horizontal. Kontrol formulir dalam formulir sebaris sedikit berbeda dari status defaultnya.
Kontrolnya adalah display: flex, menciutkan ruang putih HTML apa pun dan memungkinkan Anda memberikan kontrol perataan dengan utilitas spasi dan flexbox .
Kontrol dan grup input menerima width: autountuk mengganti default Bootstrap width: 100%.
Kontrol hanya muncul sebaris di area pandang yang lebarnya minimal 576 piksel untuk memperhitungkan area pandang yang sempit di perangkat seluler.
Anda mungkin perlu menangani lebar dan perataan kontrol formulir individual secara manual dengan utilitas spasi (seperti yang ditunjukkan di bawah). Terakhir, pastikan untuk selalu menyertakan a <label>dengan setiap kontrol formulir, bahkan jika Anda perlu menyembunyikannya dari pengunjung non-pembaca layar dengan .sr-only.
Kontrol dan pemilihan formulir kustom juga didukung.
Alternatif untuk label tersembunyi
Teknologi bantu seperti pembaca layar akan mengalami masalah dengan formulir Anda jika Anda tidak menyertakan label untuk setiap masukan. Untuk formulir sebaris ini, Anda dapat menyembunyikan label menggunakan .sr-onlykelas. Ada metode alternatif lebih lanjut untuk memberikan label untuk teknologi bantu, seperti aria-label, aria-labelledbyatau titleatribut. Jika tidak ada yang hadir, teknologi bantu dapat menggunakan placeholderatribut, jika ada, tetapi perhatikan bahwa penggunaan placeholdersebagai pengganti metode pelabelan lain tidak disarankan.
teks bantuan
Teks bantuan tingkat blok dalam formulir dapat dibuat menggunakan .form-text(sebelumnya dikenal sebagai .help-blockdi v3). Teks bantuan sebaris dapat diimplementasikan secara fleksibel menggunakan elemen HTML sebaris dan kelas utilitas seperti .text-muted.
Mengaitkan teks bantuan dengan kontrol formulir
Teks bantuan harus secara eksplisit dikaitkan dengan kontrol formulir yang terkait dengan penggunaan aria-describedbyatribut. Ini akan memastikan bahwa teknologi bantu—seperti pembaca layar—akan mengumumkan teks bantuan ini saat pengguna memfokuskan atau memasuki kontrol.
Teks bantuan di bawah input dapat ditata dengan .form-text. Kelas ini menyertakan display: blockdan menambahkan beberapa margin atas untuk memudahkan jarak dari input di atas.
Kata sandi Anda harus terdiri dari 8-20 karakter, berisi huruf dan angka, dan tidak boleh mengandung spasi, karakter khusus, atau emoji.
Teks sebaris dapat menggunakan elemen HTML sebaris apa pun (baik itu a <small>, <span>, atau yang lainnya) dengan tidak lebih dari kelas utilitas.
Formulir yang dinonaktifkan
Tambahkan disabledatribut boolean pada input untuk mencegah interaksi pengguna dan membuatnya tampak lebih ringan.
Tambahkan disabledatribut ke a <fieldset>untuk menonaktifkan semua kontrol di dalamnya.
Peringatan dengan jangkar
Secara default, browser akan memperlakukan semua kontrol bentuk asli ( <input>, <select>dan <button>elemen) di dalam a <fieldset disabled>sebagai dinonaktifkan, mencegah interaksi keyboard dan mouse pada keduanya. Namun, jika formulir Anda juga menyertakan <a ... class="btn btn-*">elemen, ini hanya akan diberi gaya pointer-events: none. Seperti disebutkan di bagian tentang status dinonaktifkan untuk tombol (dan khususnya di sub-bagian untuk elemen jangkar), properti CSS ini belum distandarisasi dan tidak sepenuhnya didukung di Internet Explorer 10, dan tidak akan mencegah pengguna keyboard dapat memfokuskan atau mengaktifkan tautan ini. Jadi untuk amannya, gunakan JavaScript khusus untuk menonaktifkan tautan tersebut.
Kompatibilitas lintas-browser
Meskipun Bootstrap akan menerapkan gaya ini di semua browser, Internet Explorer 11 dan di bawahnya tidak sepenuhnya mendukung disabledatribut pada file <fieldset>. Gunakan JavaScript khusus untuk menonaktifkan fieldset di browser ini.
Validasi
Berikan umpan balik yang berharga dan dapat ditindaklanjuti kepada pengguna Anda dengan validasi formulir HTML5– tersedia di semua browser yang kami dukung . Pilih dari umpan balik validasi default browser, atau terapkan pesan khusus dengan kelas bawaan dan JavaScript pemula kami.
Saat ini kami menyarankan untuk menggunakan gaya validasi khusus, karena pesan validasi default browser asli tidak secara konsisten diekspos ke teknologi bantu di semua browser (terutama, Chrome di desktop dan seluler).
Bagaimana itu bekerja
Inilah cara kerja validasi formulir dengan Bootstrap:
Validasi formulir HTML diterapkan melalui dua kelas semu CSS, :invaliddan :valid. Ini berlaku untuk <input>, <select>, dan <textarea>elemen.
Bootstrap mencakup :invaliddan :validgaya ke kelas induk .was-validated, biasanya diterapkan ke <form>. Jika tidak, bidang wajib apa pun tanpa nilai akan ditampilkan sebagai tidak valid pada pemuatan halaman. Dengan cara ini, Anda dapat memilih kapan harus mengaktifkannya (biasanya setelah pengiriman formulir dicoba).
Untuk mengatur ulang tampilan formulir (misalnya, dalam kasus pengiriman formulir dinamis menggunakan AJAX), hapus .was-validatedkelas dari <form>lagi setelah pengiriman.
Sebagai fallback, .is-invaliddan .is-validkelas dapat digunakan sebagai ganti kelas semu untuk validasi sisi server . Mereka tidak memerlukan .was-validatedkelas induk.
Karena kendala dalam cara kerja CSS, kami tidak dapat (saat ini) menerapkan gaya ke a <label>yang muncul sebelum kontrol formulir di DOM tanpa bantuan JavaScript khusus.
Semua browser modern mendukung API validasi kendala , serangkaian metode JavaScript untuk memvalidasi kontrol formulir.
Pesan umpan balik dapat menggunakan default browser (berbeda untuk setiap browser, dan tidak dapat diubah gayanya melalui CSS) atau gaya umpan balik khusus kami dengan HTML dan CSS tambahan.
Anda dapat memberikan pesan validitas khusus setCustomValiditydalam JavaScript.
Dengan mengingat hal itu, pertimbangkan demo berikut untuk gaya validasi formulir kustom kami, kelas sisi server opsional, dan default browser.
Gaya kustom
Untuk pesan validasi formulir Bootstrap kustom, Anda harus menambahkan novalidateatribut boolean ke file <form>. Ini menonaktifkan tooltips umpan balik default browser, tetapi masih menyediakan akses ke API validasi formulir di JavaScript. Coba kirimkan formulir di bawah ini; JavaScript kami akan mencegat tombol kirim dan menyampaikan umpan balik kepada Anda. Saat mencoba mengirim, Anda akan melihat :invaliddan :validgaya diterapkan ke kontrol formulir Anda.
Gaya umpan balik khusus menerapkan warna, batas, gaya fokus, dan ikon latar belakang khusus untuk mengomunikasikan umpan balik dengan lebih baik. Ikon latar belakang untuk <select>s hanya tersedia dengan .custom-select, dan tidak .form-control.
Default peramban
Tidak tertarik dengan pesan umpan balik validasi khusus atau menulis JavaScript untuk mengubah perilaku formulir? Semua baik, Anda dapat menggunakan browser default. Coba kirimkan formulir di bawah ini. Tergantung pada browser dan OS Anda, Anda akan melihat gaya umpan balik yang sedikit berbeda.
Meskipun gaya umpan balik ini tidak dapat ditata dengan CSS, Anda masih dapat menyesuaikan teks umpan balik melalui JavaScript.
Sisi server
Kami merekomendasikan penggunaan validasi sisi klien, tetapi jika Anda memerlukan validasi sisi server, Anda dapat menunjukkan bidang formulir yang tidak valid dan valid dengan .is-invaliddan .is-valid. Perhatikan bahwa .invalid-feedbackjuga didukung dengan kelas-kelas ini.
Elemen yang didukung
Gaya validasi tersedia untuk kontrol dan komponen formulir berikut ini:
<input>s dan <textarea>s dengan .form-control(termasuk hingga satu .form-controldi grup input)
<select>s dengan .form-controlor.custom-select
.form-checks
.custom-checkboxs dan .custom-radios
.custom-file
Keterangan alat
Jika tata letak formulir Anda mengizinkannya, Anda bisa menukar .{valid|invalid}-feedbackkelas dengan .{valid|invalid}-tooltipkelas untuk menampilkan umpan balik validasi dalam tip alat bergaya. Pastikan untuk memiliki induk position: relativeuntuk pemosisian tooltip. Pada contoh di bawah, kelas kolom kami sudah memilikinya, tetapi proyek Anda mungkin memerlukan penyiapan alternatif.
Menyesuaikan
Status validasi dapat disesuaikan melalui Sass dengan $form-validation-statespeta. Terletak di _variables.scssfile kami, peta Sass ini dilingkarkan untuk menghasilkan status default valid/ invalidvalidasi. Termasuk adalah peta bersarang untuk menyesuaikan warna dan ikon setiap negara bagian. Meskipun tidak ada status lain yang didukung oleh browser, mereka yang menggunakan gaya kustom dapat dengan mudah menambahkan umpan balik formulir yang lebih kompleks.
Harap dicatat bahwa kami tidak menyarankan untuk menyesuaikan nilai-nilai ini tanpa juga memodifikasi form-validation-statemixin.
Formulir khusus
Untuk lebih banyak penyesuaian dan konsistensi lintas browser, gunakan elemen formulir kustom sepenuhnya kami untuk menggantikan default browser. Mereka dibangun di atas markup semantik dan dapat diakses, jadi mereka adalah pengganti yang solid untuk kontrol formulir default apa pun.
Kotak centang dan radio
Setiap kotak centang dan radio <input>dan <label>penyandingan dibungkus <div>untuk membuat kontrol khusus kami. Secara struktural, ini adalah pendekatan yang sama dengan default kami .form-check.
Kami menggunakan pemilih saudara ( ~) untuk semua <input>status kami—seperti :checked—untuk menata dengan benar indikator formulir kustom kami. Saat digabungkan dengan .custom-control-labelkelas, kita juga dapat menata teks untuk setiap item berdasarkan status <input>'.
Kami menyembunyikan default <input>dengan opacitydan menggunakan .custom-control-labeluntuk membangun indikator formulir kustom baru di tempatnya dengan ::beforedan ::after. Sayangnya kami tidak dapat membuat yang khusus hanya dari <input>karena CSS contenttidak berfungsi pada elemen itu.
Dalam status yang dicentang, kami menggunakan ikon SVG tertanam base64 dari Open Iconic . Ini memberi kami kontrol terbaik untuk penataan gaya dan pemosisian di seluruh browser dan perangkat.
kotak centang
Kotak centang khusus juga dapat menggunakan :indeterminatekelas semu saat diatur secara manual melalui JavaScript (tidak ada atribut HTML yang tersedia untuk menentukannya).
Jika Anda menggunakan jQuery, sesuatu seperti ini sudah cukup:
Radio
Di barisan
Dengan disabilitas
Kotak centang dan radio khusus juga dapat dinonaktifkan. Tambahkan disabledatribut boolean ke <input>dan indikator kustom serta deskripsi label akan ditata secara otomatis.
Sakelar
Sakelar memiliki markup kotak centang khusus tetapi menggunakan .custom-switchkelas untuk merender sakelar sakelar. Switch juga mendukung disabledatribut.
Pilih menu
Menu khusus <select>hanya membutuhkan kelas khusus, .custom-selectuntuk memicu gaya khusus. Gaya kustom terbatas pada <select>tampilan awal 's dan tidak dapat mengubah <option>s karena keterbatasan browser.
Anda juga dapat memilih dari pilihan kustom kecil dan besar untuk mencocokkan input teks kami yang berukuran sama.
Atribut multiplejuga didukung:
Seperti sizeatributnya:
Jangkauan
Buat <input type="range">kontrol khusus dengan .custom-range. Trek (latar belakang) dan ibu jari (nilai) keduanya ditata agar tampak sama di seluruh browser. Karena hanya IE dan Firefox yang mendukung "mengisi" trek mereka dari kiri atau kanan ibu jari sebagai sarana untuk menunjukkan kemajuan secara visual, saat ini kami tidak mendukungnya.
Input rentang memiliki nilai implisit untuk mindan max— 0dan 100, masing-masing. Anda dapat menentukan nilai baru untuk mereka yang menggunakan atribut minand .max
Secara default, rentang memasukkan "snap" ke nilai integer. Untuk mengubah ini, Anda dapat menentukan stepnilai. Pada contoh di bawah ini, kami menggandakan jumlah langkah dengan menggunakan step="0.5".
Peramban berkas
Plugin yang direkomendasikan untuk menganimasikan input file kustom: bs-custom-file-input , itulah yang kami gunakan saat ini di sini di dokumen kami.
Input file adalah yang paling kasar dan membutuhkan JavaScript tambahan jika Anda ingin menghubungkannya dengan file Choose fungsional… dan teks nama file yang dipilih.
Kami menyembunyikan file default <input>melalui opacitydan sebagai gantinya menata file <label>. Tombol dibuat dan diposisikan dengan ::after. Terakhir, kami mendeklarasikan a widthdan heightpada <input>untuk spasi yang tepat untuk konten di sekitarnya.
Menerjemahkan atau menyesuaikan string dengan SCSS
Kelas :lang()semu digunakan untuk memungkinkan terjemahan teks "Jelajahi" ke bahasa lain. Ganti atau tambahkan entri ke $custom-file-textvariabel Sass dengan tag bahasa yang relevan dan string yang dilokalkan. String bahasa Inggris dapat dikustomisasi dengan cara yang sama. Misalnya, berikut ini cara menambahkan terjemahan bahasa Spanyol (kode bahasa Spanyol adalah es):
Berikut ini lang(es)tindakan pada input file khusus untuk terjemahan bahasa Spanyol:
Anda harus mengatur bahasa dokumen Anda (atau subpohonnya) dengan benar agar teks yang benar dapat ditampilkan. Ini dapat dilakukan dengan menggunakan atribut langpada elemen <html>atau Content-Languageheader HTTP , di antara metode lainnya.
Menerjemahkan atau menyesuaikan string dengan HTML
Bootstrap juga menyediakan cara untuk menerjemahkan teks "Jelajahi" dalam HTML dengan data-browseatribut yang dapat ditambahkan ke label input khusus (contoh dalam bahasa Belanda):