Contoh dan garis panduan penggunaan untuk gaya kawalan borang, pilihan reka letak dan komponen tersuai untuk mencipta pelbagai bentuk.
Gambaran keseluruhan
Kawalan borang Bootstrap berkembang pada gaya borang Dibut semula kami dengan kelas. Gunakan kelas ini untuk ikut serta dalam paparan tersuai mereka untuk pemaparan yang lebih konsisten merentas penyemak imbas dan peranti.
Pastikan anda menggunakan typeatribut yang sesuai pada semua input (cth, emailuntuk alamat e-mel atau numberuntuk maklumat berangka) untuk memanfaatkan kawalan input yang lebih baharu seperti pengesahan e-mel, pemilihan nombor dan banyak lagi.
Berikut ialah contoh pantas untuk menunjukkan gaya borang Bootstrap. Teruskan membaca untuk mendapatkan dokumentasi tentang kelas yang diperlukan, susun atur borang dan banyak lagi.
Kawalan borang
Kawalan bentuk teks—seperti <input>s, <select>s dan <textarea>s—digayakan dengan .form-controlkelas. Termasuk adalah gaya untuk penampilan umum, keadaan fokus, saiz dan banyak lagi.
Pastikan anda meneroka borang tersuai kami untuk menggayakan lagi <select>.
Untuk input fail, tukar .form-controldengan .form-control-file.
Saiz
Tetapkan ketinggian menggunakan kelas seperti .form-control-lgdan .form-control-sm.
Baca sahaja
Tambahkan readonlyatribut boolean pada input untuk mengelakkan pengubahsuaian nilai input. Input baca sahaja kelihatan lebih ringan (sama seperti input yang dilumpuhkan), tetapi mengekalkan kursor standard.
Teks biasa baca sahaja
Jika anda ingin mempunyai <input readonly>elemen dalam borang anda digayakan sebagai teks biasa, gunakan .form-control-plaintextkelas untuk mengalih keluar penggayaan medan borang lalai dan mengekalkan jidar dan pelapik yang betul.
Input Julat
Tetapkan input julat boleh ditatal secara mendatar menggunakan .form-control-range.
Kotak semak dan radio
Kotak semak dan radio lalai ditambah baik dengan bantuan .form-check, satu kelas untuk kedua-dua jenis input yang menambah baik reka letak dan tingkah laku elemen HTML mereka . Kotak pilihan adalah untuk memilih satu atau beberapa pilihan dalam senarai, manakala radio adalah untuk memilih satu pilihan daripada banyak.
Kotak semak dan radio yang dilumpuhkan disokong, tetapi untuk menyediakan not-allowedkursor pada tuding induk <label>, anda perlu menambah disabledatribut pada .form-check-input. Atribut yang dilumpuhkan akan menggunakan warna yang lebih cerah untuk membantu menunjukkan keadaan input.
Kotak semak dan penggunaan radio dibina untuk menyokong pengesahan borang berasaskan HTML dan menyediakan label yang ringkas dan boleh diakses. Oleh itu, <input>s dan <label>s kami adalah unsur adik beradik berbanding dengan <input>dalam a <label>. Ini lebih bertele-tele kerana anda mesti menentukan iddan foratribut untuk mengaitkan <input>dan <label>.
Lalai (bertindan)
Secara lalai, sebarang bilangan kotak pilihan dan radio yang merupakan saudara terdekat akan disusun secara menegak dan dijarakkan dengan .form-check.
Dalam barisan
Kumpulan kotak semak atau radio pada baris mendatar yang sama dengan menambah .form-check-inlinepada mana-mana .form-check.
Tanpa label
Tambahkan .position-staticpada input dalam .form-checkyang tidak mempunyai sebarang teks label. Ingat untuk tetap menyediakan beberapa bentuk label untuk teknologi bantuan (contohnya, menggunakan aria-label).
Susun atur
Memandangkan Bootstrap terpakai display: blockdan width: 100%pada hampir semua kawalan borang kami, borang akan disusun secara lalai secara menegak. Kelas tambahan boleh digunakan untuk mengubah susun atur ini mengikut asas per-bentuk.
Bentuk kumpulan
Kelas .form-groupialah cara paling mudah untuk menambah beberapa struktur pada borang. Ia menyediakan kelas fleksibel yang menggalakkan pengelompokan label, kawalan, teks bantuan pilihan dan pemesejan pengesahan borang yang betul. Secara lalai ia hanya terpakai margin-bottom, tetapi ia mengambil gaya tambahan .form-inlinemengikut keperluan. Gunakannya dengan <fieldset>s, <div>s atau hampir mana-mana elemen lain.
Borang grid
Borang yang lebih kompleks boleh dibina menggunakan kelas grid kami. Gunakan ini untuk reka letak borang yang memerlukan berbilang lajur, lebar yang berbeza-beza dan pilihan penjajaran tambahan.
Borang baris
Anda juga boleh menukar .rowuntuk .form-row, variasi baris grid standard kami yang mengatasi talang lajur lalai untuk susun atur yang lebih ketat dan padat.
Reka letak yang lebih kompleks juga boleh dibuat dengan sistem grid.
Bentuk mendatar
Buat borang mendatar dengan grid dengan menambahkan .rowkelas untuk membentuk kumpulan dan menggunakan .col-*-*kelas untuk menentukan lebar label dan kawalan anda. Pastikan anda menambah s .col-form-labelanda <label>juga supaya ia berpusat secara menegak dengan kawalan borang yang berkaitan.
Kadangkala, anda mungkin perlu menggunakan utiliti margin atau padding untuk mencipta penjajaran sempurna yang anda perlukan. Sebagai contoh, kami telah mengalih keluar padding-toplabel input radio bertindan kami untuk menjajarkan garis dasar teks dengan lebih baik.
Saiz label bentuk mendatar
Pastikan anda menggunakan .col-form-label-smatau .col-form-label-lgkepada <label>s atau <legend>s anda untuk mengikut saiz .form-control-lgdan .form-control-sm.
Saiz lajur
Seperti yang ditunjukkan dalam contoh sebelumnya, sistem grid kami membenarkan anda meletakkan sebarang nombor .cols dalam a .rowatau .form-row. Mereka akan membahagikan lebar yang tersedia sama rata antara mereka. Anda juga boleh memilih subset lajur anda untuk menggunakan lebih atau kurang ruang, manakala .cols selebihnya membahagikan yang lain, dengan kelas lajur tertentu seperti .col-7.
Auto-saiz
Contoh di bawah menggunakan utiliti flexbox untuk memusatkan kandungan secara menegak dan mengubahnya .colsupaya .col-autolajur anda hanya menggunakan ruang sebanyak yang diperlukan. Dengan kata lain, saiz lajur itu sendiri berdasarkan kandungannya.
Anda kemudian boleh mengadun semula itu sekali lagi dengan kelas lajur khusus saiz.
Gunakan .form-inlinekelas untuk memaparkan satu siri label, kawalan borang dan butang pada satu baris mendatar. Kawalan borang dalam borang sebaris berbeza sedikit daripada keadaan lalainya.
Kawalan ialah display: flex, meruntuhkan mana-mana ruang putih HTML dan membolehkan anda menyediakan kawalan penjajaran dengan utiliti jarak dan kotak fleksibel .
Kumpulan kawalan dan input diterima width: autountuk mengatasi lalai Bootstrap width: 100%.
Kawalan hanya kelihatan sebaris dalam port pandangan yang berukuran sekurang-kurangnya 576px lebar untuk mengambil kira port pandangan sempit pada peranti mudah alih.
Anda mungkin perlu menangani secara manual lebar dan penjajaran kawalan borang individu dengan utiliti jarak (seperti ditunjukkan di bawah). Akhir sekali, pastikan anda sentiasa menyertakan a <label>dengan setiap kawalan borang, walaupun anda perlu menyembunyikannya daripada pelawat bukan pembaca skrin dengan .sr-only.
Kawalan dan pilihan borang tersuai juga disokong.
Alternatif kepada label tersembunyi
Teknologi bantuan seperti pembaca skrin akan menghadapi masalah dengan borang anda jika anda tidak menyertakan label untuk setiap input. Untuk borang sebaris ini, anda boleh menyembunyikan label menggunakan .sr-onlykelas. Terdapat kaedah alternatif selanjutnya untuk menyediakan label untuk teknologi bantuan, seperti aria-label, aria-labelledbyatau titleatribut. Jika tiada satu pun daripada ini hadir, teknologi bantuan boleh menggunakan placeholderatribut, jika ada, tetapi ambil perhatian bahawa penggunaan placeholdersebagai pengganti kaedah pelabelan lain tidak digalakkan.
Teks bantuan
Teks bantuan peringkat blok dalam borang boleh dibuat menggunakan .form-text(sebelum ini dikenali sebagai .help-blockdalam v3). Teks bantuan sebaris boleh dilaksanakan secara fleksibel menggunakan mana-mana elemen HTML sebaris dan kelas utiliti seperti .text-muted.
Mengaitkan teks bantuan dengan kawalan borang
Teks bantuan harus dikaitkan secara eksplisit dengan kawalan borang yang berkaitan dengan penggunaan aria-describedbyatribut. Ini akan memastikan bahawa teknologi bantuan—seperti pembaca skrin—akan mengumumkan teks bantuan ini apabila pengguna memfokus atau memasuki kawalan.
Teks bantuan di bawah input boleh digayakan dengan .form-text. Kelas ini termasuk display: blockdan menambah beberapa margin atas untuk jarak yang mudah daripada input di atas.
Kata laluan anda mestilah 8-20 aksara panjang, mengandungi huruf dan nombor dan tidak boleh mengandungi ruang, aksara khas atau emoji.
Teks sebaris boleh menggunakan mana-mana elemen HTML sebaris biasa (sama ada <small>, <span>, atau sesuatu yang lain) dengan tidak lebih daripada kelas utiliti.
Borang dilumpuhkan
Tambahkan disabledatribut boolean pada input untuk menghalang interaksi pengguna dan menjadikannya kelihatan lebih ringan.
Tambahkan disabledatribut pada a <fieldset>untuk melumpuhkan semua kawalan di dalamnya.
Kaveat dengan sauh
Secara lalai, penyemak imbas akan menganggap semua kawalan bentuk asli ( <input>, <select>dan <button>elemen) di dalam a <fieldset disabled>sebagai dilumpuhkan, menghalang interaksi papan kekunci dan tetikus padanya. Walau bagaimanapun, jika borang anda juga termasuk <a ... class="btn btn-*">elemen, ini hanya akan diberikan gaya pointer-events: none. Seperti yang dinyatakan dalam bahagian tentang keadaan dilumpuhkan untuk butang (dan khususnya dalam sub-bahagian untuk elemen utama), sifat CSS ini belum lagi diseragamkan dan tidak disokong sepenuhnya dalam Internet Explorer 10 dan tidak akan menghalang pengguna papan kekunci daripada menjadi dapat memfokuskan atau mengaktifkan pautan ini. Jadi untuk selamat, gunakan JavaScript tersuai untuk melumpuhkan pautan tersebut.
Keserasian merentas pelayar
Walaupun Bootstrap akan menggunakan gaya ini dalam semua penyemak imbas, Internet Explorer 11 dan ke bawah tidak menyokong sepenuhnya disabledatribut pada <fieldset>. Gunakan JavaScript tersuai untuk melumpuhkan set medan dalam penyemak imbas ini.
Pengesahan
Berikan maklum balas yang berharga dan boleh diambil tindakan kepada pengguna anda dengan pengesahan borang HTML5– tersedia dalam semua penyemak imbas kami yang disokong . Pilih daripada maklum balas pengesahan lalai penyemak imbas, atau laksanakan mesej tersuai dengan kelas terbina dalam dan JavaScript pemula kami.
Pada masa ini kami mengesyorkan menggunakan gaya pengesahan tersuai, kerana mesej pengesahan lalai penyemak imbas asli tidak terdedah secara konsisten kepada teknologi bantuan dalam semua penyemak imbas (terutamanya, Chrome pada desktop dan mudah alih).
Bagaimana ia berfungsi
Begini cara pengesahan borang berfungsi dengan Bootstrap:
Pengesahan borang HTML digunakan melalui dua kelas pseudo CSS :invaliddan :valid. Ia terpakai kepada <input>, <select>, dan <textarea>elemen.
Bootstrap merangkumi skop :invaliddan :validgaya kepada kelas induk .was-validated, biasanya digunakan pada <form>. Jika tidak, sebarang medan yang diperlukan tanpa nilai akan dipaparkan sebagai tidak sah pada pemuatan halaman. Dengan cara ini, anda boleh memilih masa untuk mengaktifkannya (biasanya selepas penyerahan borang cuba).
Untuk menetapkan semula penampilan borang (contohnya, dalam kes penyerahan borang dinamik menggunakan AJAX), alih keluar .was-validatedkelas daripada <form>sekali lagi selepas penyerahan.
Sebagai sandaran, .is-invaliddan .is-validkelas boleh digunakan dan bukannya kelas pseudo untuk pengesahan sisi pelayan . Mereka tidak memerlukan .was-validatedkelas ibu bapa.
Disebabkan oleh kekangan dalam cara CSS berfungsi, kami tidak boleh (pada masa ini) menggunakan gaya pada <label>yang datang sebelum kawalan borang dalam DOM tanpa bantuan JavaScript tersuai.
Semua penyemak imbas moden menyokong API pengesahan kekangan , satu siri kaedah JavaScript untuk mengesahkan kawalan borang.
Mesej maklum balas mungkin menggunakan lalai penyemak imbas (berbeza untuk setiap penyemak imbas, dan tidak boleh digayakan melalui CSS) atau gaya maklum balas tersuai kami dengan HTML dan CSS tambahan.
Anda boleh memberikan mesej kesahan tersuai dengan setCustomValiditydalam JavaScript.
Dengan itu, pertimbangkan tunjuk cara berikut untuk gaya pengesahan borang tersuai kami, kelas sisi pelayan pilihan dan lalai penyemak imbas.
Gaya tersuai
Untuk mesej pengesahan borang Bootstrap tersuai, anda perlu menambah novalidateatribut boolean pada <form>. Ini melumpuhkan petua alat maklum balas lalai penyemak imbas, tetapi masih menyediakan akses kepada API pengesahan borang dalam JavaScript. Cuba hantar borang di bawah; JavaScript kami akan memintas butang hantar dan menyampaikan maklum balas kepada anda.
Apabila cuba menyerahkan, anda akan melihat gaya :invaliddan :validdigunakan pada kawalan borang anda.
Penyemak imbas lalai
Tidak berminat dengan mesej maklum balas pengesahan tersuai atau menulis JavaScript untuk menukar gelagat borang? Semua baik, anda boleh menggunakan lalai penyemak imbas. Cuba hantar borang di bawah. Bergantung pada penyemak imbas dan OS anda, anda akan melihat gaya maklum balas yang berbeza sedikit.
Walaupun gaya maklum balas ini tidak boleh digayakan dengan CSS, anda masih boleh menyesuaikan teks maklum balas melalui JavaScript.
Bahagian pelayan
Kami mengesyorkan menggunakan pengesahan pihak klien, tetapi sekiranya anda memerlukan bahagian pelayan, anda boleh menunjukkan medan borang yang tidak sah dan sah dengan .is-invaliddan .is-valid. Ambil perhatian bahawa .invalid-feedbackjuga disokong dengan kelas ini.
Elemen yang disokong
Contoh borang kami menunjukkan teks asli <input>di atas, tetapi gaya pengesahan borang juga tersedia untuk kawalan borang tersuai kami.
Petua alat
Jika reka letak borang anda membenarkannya, anda boleh menukar .{valid|invalid}-feedbackkelas untuk .{valid|invalid}-tooltipkelas untuk memaparkan maklum balas pengesahan dalam petua alat gaya. Pastikan anda mempunyai ibu bapa position: relativedengannya untuk kedudukan petua alat. Dalam contoh di bawah, kelas lajur kami sudah pun mempunyai ini, tetapi projek anda mungkin memerlukan persediaan alternatif.
Borang tersuai
Untuk lebih banyak penyesuaian dan ketekalan penyemak imbas silang, gunakan elemen borang tersuai sepenuhnya kami untuk menggantikan lalai penyemak imbas. Ia dibina di atas penanda semantik dan boleh diakses, jadi ia adalah pengganti yang kukuh untuk sebarang kawalan bentuk lalai.
Kotak semak dan radio
Setiap kotak pilihan dan radio dibalut <div>dengan dengan adik beradik <span>untuk membuat kawalan tersuai kami dan <label>untuk teks yang disertakan. Dari segi struktur, ini adalah pendekatan yang sama seperti lalai kami .form-check.
Kami menggunakan pemilih adik beradik ( ~) untuk semua <input>keadaan kami—seperti :checked—untuk menggayakan penunjuk bentuk tersuai kami dengan betul. Apabila digabungkan dengan .custom-control-labelkelas, kita juga boleh menggayakan teks untuk setiap item berdasarkan keadaan <input>'.
Kami menyembunyikan lalai <input>dengan opacitydan menggunakan .custom-control-labeluntuk membina penunjuk borang tersuai baharu di tempatnya dengan ::beforedan ::after. Malangnya kami tidak boleh membina satu tersuai daripada hanya <input>kerana CSS contenttidak berfungsi pada elemen itu.
Dalam keadaan yang ditandai, kami menggunakan ikon SVG terbenam base64 daripada Open Iconic . Ini memberikan kami kawalan terbaik untuk penggayaan dan kedudukan merentas penyemak imbas dan peranti.
Kotak semak
Kotak pilihan tersuai juga boleh menggunakan :indeterminatekelas pseudo apabila ditetapkan secara manual melalui JavaScript (tiada atribut HTML tersedia untuk menentukannya).
Jika anda menggunakan jQuery, sesuatu seperti ini sudah memadai:
Radio
Dalam barisan
Dilumpuhkan
Kotak semak dan radio tersuai juga boleh dilumpuhkan. Tambahkan disabledatribut boolean pada <input>dan penunjuk tersuai serta perihalan label akan digayakan secara automatik.
Pilih menu
Menu tersuai <select>hanya memerlukan kelas tersuai, .custom-selectuntuk mencetuskan gaya tersuai. Gaya tersuai adalah terhad kepada <select>penampilan awal dan tidak boleh mengubah suai <option>s kerana pengehadan penyemak imbas.
Anda juga boleh memilih daripada pilihan tersuai kecil dan besar untuk memadankan input teks bersaiz serupa kami.
Atribut multiplejuga disokong:
Seperti sizesifatnya:
Julat
<input type="range">Buat kawalan tersuai dengan .custom-range. Lagu (latar belakang) dan ibu jari (nilai) kedua-duanya digayakan untuk kelihatan sama merentas pelayar. Memandangkan hanya IE dan Firefox menyokong "mengisi" trek mereka dari kiri atau kanan ibu jari sebagai cara untuk menunjukkan kemajuan secara visual, kami tidak menyokongnya pada masa ini.
Input julat mempunyai nilai tersirat untuk mindan max— 0dan 100, masing-masing. Anda boleh menentukan nilai baharu untuk mereka yang menggunakan atribut mindan .max
Secara lalai, julat input "snap" kepada nilai integer. Untuk menukar ini, anda boleh menentukan stepnilai. Dalam contoh di bawah, kami menggandakan bilangan langkah dengan menggunakan step="0.5".
pelayar fail
Input fail adalah yang paling jelek daripada kumpulan itu dan memerlukan JavaScript tambahan jika anda ingin menyambungkannya dengan Pilih fail yang berfungsi… dan teks nama fail yang dipilih.
Kami menyembunyikan fail lalai <input>melalui opacitydan sebaliknya menggayakan <label>. Butang dijana dan diletakkan dengan ::after. Akhir sekali, kami mengisytiharkan widthdan heightpada <input>untuk jarak yang sesuai untuk kandungan sekitar.
Menterjemah atau menyesuaikan rentetan
Kelas :lang()pseudo digunakan untuk membenarkan terjemahan teks "Semak imbas" ke dalam bahasa lain. Ganti atau tambah entri pada $custom-file-textpembolehubah Sass dengan teg bahasa yang berkaitan dan rentetan setempat. Rentetan bahasa Inggeris boleh disesuaikan dengan cara yang sama. Sebagai contoh, berikut ialah cara seseorang boleh menambah terjemahan bahasa Sepanyol (kod bahasa Sepanyol ialah es):
Berikut adalah lang(es)tindakan pada input fail tersuai untuk terjemahan bahasa Sepanyol:
Anda perlu menetapkan bahasa dokumen anda (atau subpokoknya) dengan betul agar teks yang betul dapat ditunjukkan. Ini boleh dilakukan menggunakan atributlang pada elemen<html> atau Content-Languagepengepala HTTP , antara kaedah lain.