Pendekatan
Ketahui tentang prinsip panduan, strategi dan teknik yang digunakan untuk membina dan mengekalkan Bootstrap supaya anda boleh menyesuaikan dan memanjangkannya sendiri dengan lebih mudah.
Walaupun halaman permulaan menyediakan lawatan pengenalan projek dan perkara yang ditawarkan, dokumen ini memfokuskan pada sebab kami melakukan perkara yang kami lakukan dalam Bootstrap. Ia menerangkan falsafah kami untuk membina di web supaya orang lain boleh belajar daripada kami, menyumbang dengan kami dan membantu kami bertambah baik.
Lihat sesuatu yang kedengaran tidak betul, atau mungkin boleh dilakukan dengan lebih baik? Buka isu —kami ingin membincangkannya dengan anda.
Ringkasan
Kami akan menyelami setiap perkara ini lebih lanjut, tetapi pada tahap yang tinggi, inilah yang membimbing pendekatan kami.
- Komponen hendaklah responsif dan mengutamakan mudah alih
- Komponen harus dibina dengan kelas asas dan dilanjutkan melalui kelas pengubah suai
- Keadaan komponen harus mematuhi skala indeks z biasa
- Apabila boleh, lebih suka pelaksanaan HTML dan CSS berbanding JavaScript
- Apabila boleh, gunakan utiliti berbanding gaya tersuai
- Apabila boleh, elakkan menguatkuasakan keperluan HTML yang ketat (pemilih kanak-kanak)
Responsif
Gaya responsif Bootstrap dibina untuk menjadi responsif, pendekatan yang sering dirujuk sebagai diutamakan mudah alih . Kami menggunakan istilah ini dalam dokumen kami dan sebahagian besarnya bersetuju dengannya, tetapi kadangkala istilah ini boleh menjadi terlalu luas. Walaupun bukan setiap komponen mesti responsif sepenuhnya dalam Bootstrap, pendekatan responsif ini adalah tentang mengurangkan penggantian CSS dengan mendorong anda menambah gaya apabila port pandangan menjadi lebih besar.
Di seluruh Bootstrap, anda akan melihat ini dengan paling jelas dalam pertanyaan media kami. Dalam kebanyakan kes, kami menggunakan min-width
pertanyaan yang mula digunakan pada titik putus tertentu dan diteruskan melalui titik putus yang lebih tinggi. Contohnya, a .d-none
digunakan dari min-width: 0
hingga infiniti. Sebaliknya, a .d-md-none
digunakan dari titik putus sederhana dan ke atas.
Kadangkala kita akan menggunakan max-width
apabila kerumitan yang wujud komponen memerlukannya. Kadangkala, penggantian ini lebih jelas dari segi fungsi dan mental untuk dilaksanakan dan disokong daripada menulis semula fungsi teras daripada komponen kami. Kami berusaha untuk mengehadkan pendekatan ini, tetapi akan menggunakannya dari semasa ke semasa.
Kelas
Selain daripada But semula kami, helaian gaya normalisasi merentas penyemak imbas, semua gaya kami bertujuan untuk menggunakan kelas sebagai pemilih. Ini bermakna mengelak daripada pemilih jenis (cth, input[type="text"]
) dan kelas induk luar (cth, .parent .child
) yang menjadikan gaya terlalu khusus untuk ditindih dengan mudah.
Oleh itu, komponen harus dibina dengan kelas asas yang menempatkan pasangan nilai harta yang biasa dan tidak boleh ditindih. Contohnya, .btn
dan .btn-primary
. Kami gunakan .btn
untuk semua gaya biasa seperti display
, padding
, dan border-width
. Kami kemudian menggunakan pengubah suai seperti .btn-primary
menambah warna, warna latar belakang, warna sempadan, dll.
Kelas pengubah suai hanya boleh digunakan apabila terdapat berbilang sifat atau nilai untuk ditukar merentas berbilang varian. Pengubah suai tidak selalu diperlukan, jadi pastikan anda benar-benar menyimpan baris kod dan menghalang penggantian yang tidak perlu semasa menciptanya. Contoh pengubah suai yang baik ialah kelas warna tema dan varian saiz kami.
skala indeks z
Terdapat dua z-index
skala dalam Bootstrap—elemen dalam komponen dan komponen tindanan.
Elemen komponen
- Sesetengah komponen dalam Bootstrap dibina dengan elemen bertindih untuk mengelakkan sempadan dua tanpa mengubah suai
border
harta. Contohnya, kumpulan butang, kumpulan input dan penomboran. - Komponen ini berkongsi
z-index
skala standard0
melalui3
. 0
ialah lalai (awal),1
ialah:hover
,2
ialah:active
/.active
, dan3
ialah:focus
.- Pendekatan ini sepadan dengan jangkaan kami tentang keutamaan pengguna tertinggi. Jika sesuatu elemen difokuskan, ia akan dilihat dan menjadi perhatian pengguna. Elemen aktif adalah kedua tertinggi kerana ia menunjukkan keadaan. Tuding adalah ketiga tertinggi kerana ia menunjukkan niat pengguna, tetapi hampir semua perkara boleh dilegar.
Komponen tindanan
Bootstrap termasuk beberapa komponen yang berfungsi sebagai tindanan daripada beberapa jenis. Ini termasuk, mengikut urutan tertinggi z-index
, lungsur turun, bar navigasi tetap dan melekit, modal, petua alat dan popover. z-index
Komponen ini mempunyai skala sendiri yang bermula pada 1000
. Nombor permulaan ini dipilih sewenang-wenangnya dan berfungsi sebagai penimbal kecil antara gaya kami dan gaya tersuai projek anda.
Setiap komponen tindanan meningkatkan z-index
sedikit nilainya dengan cara yang prinsip UI biasa membenarkan elemen fokus atau berlegar pengguna kekal dalam paparan pada setiap masa. Sebagai contoh, modal ialah penyekatan dokumen (cth, anda tidak boleh mengambil sebarang tindakan lain kecuali tindakan modal), jadi kami meletakkannya di atas bar navigasi kami.
Ketahui lebih lanjut mengenai perkara ini dalam z-index
halaman reka letak kami .
HTML dan CSS berbanding JS
Apabila boleh, kami lebih suka menulis HTML dan CSS berbanding JavaScript. Secara umum, HTML dan CSS lebih prolifik dan boleh diakses oleh lebih ramai orang dari semua tahap pengalaman yang berbeza. HTML dan CSS juga lebih pantas dalam penyemak imbas anda daripada JavaScript, dan penyemak imbas anda secara amnya menyediakan banyak fungsi untuk anda.
Prinsip ini ialah API JavaScript kelas pertama kami menggunakan data
atribut. Anda tidak perlu menulis hampir mana-mana JavaScript untuk menggunakan pemalam JavaScript kami; sebaliknya, tulis HTML. Baca lebih lanjut mengenai perkara ini dalam halaman gambaran keseluruhan JavaScript kami .
Akhir sekali, gaya kami membina gelagat asas elemen web biasa. Apabila boleh, kami lebih suka menggunakan apa yang disediakan oleh penyemak imbas. Sebagai contoh, anda boleh meletakkan .btn
kelas pada hampir mana-mana elemen, tetapi kebanyakan elemen tidak memberikan sebarang nilai semantik atau kefungsian penyemak imbas. Jadi sebaliknya, kami menggunakan <button>
s dan <a>
s.
Perkara yang sama berlaku untuk komponen yang lebih kompleks. Walaupun kami boleh menulis pemalam pengesahan borang kami sendiri untuk menambah kelas kepada elemen induk berdasarkan keadaan input, dengan itu membolehkan kami menggayakan teks seperti merah, kami lebih suka menggunakan elemen :valid
/ :invalid
pseudo-setiap penyemak imbas menyediakan kami.
Utiliti
Kelas utiliti—sebelum ini pembantu dalam Bootstrap 3—adalah sekutu yang kuat dalam memerangi kemerosotan CSS dan prestasi halaman yang lemah. Kelas utiliti lazimnya ialah gandingan nilai harta tunggal yang tidak berubah yang dinyatakan sebagai kelas (cth, .d-block
mewakili display: block;
). Daya tarikan utama mereka ialah kelajuan penggunaan semasa menulis HTML dan mengehadkan jumlah CSS tersuai yang perlu anda tulis.
Khususnya mengenai CSS tersuai, utiliti boleh membantu memerangi peningkatan saiz fail dengan mengurangkan pasangan nilai harta yang paling kerap berulang kepada kelas tunggal. Ini boleh memberi kesan dramatik pada skala dalam projek anda.
HTML fleksibel
Walaupun tidak selalu mungkin, kami berusaha untuk mengelak daripada menjadi terlalu dogmatik dalam keperluan HTML kami untuk komponen. Oleh itu, kami menumpukan pada kelas tunggal dalam pemilih CSS kami dan cuba mengelakkan pemilih kanak-kanak segera ( >
). Ini memberi anda lebih fleksibiliti dalam pelaksanaan anda dan membantu memastikan CSS kami lebih mudah dan kurang spesifik.
Konvensyen kod
Panduan Kod (dari pencipta bersama Bootstrap, @mdo) mendokumenkan cara kami menulis HTML dan CSS kami merentas Bootstrap. Ia menentukan garis panduan untuk pemformatan umum, lalai akal sehat, susunan sifat dan atribut, dan banyak lagi.
Kami menggunakan Stylelint untuk menguatkuasakan piawaian ini dan banyak lagi dalam Sass/CSS kami. Konfigurasi Stylelint tersuai kami ialah sumber terbuka dan tersedia untuk digunakan dan dilanjutkan oleh orang lain.
Kami menggunakan vnu-jar untuk menguatkuasakan HTML standard dan semantik, serta mengesan ralat biasa.