Sistem grid
Gunakan grid flexbox pertama mudah alih kami yang berkuasa untuk membina reka letak semua bentuk dan saiz terima kasih kepada sistem dua belas lajur, lima peringkat lalai responsif, pembolehubah dan campuran Sass serta berdozen kelas yang dipratentukan.
Sistem grid Bootstrap menggunakan satu siri bekas, baris dan lajur untuk menyusun atur dan menjajarkan kandungan. Ia dibina dengan flexbox dan responsif sepenuhnya. Di bawah ialah contoh dan pandangan yang mendalam tentang cara grid disatukan.
Baru atau tidak biasa dengan flexbox? Baca panduan flexbox Tricks CSS ini untuk latar belakang, istilah, garis panduan dan coretan kod.
<div class="container">
<div class="row">
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
</div>
</div>
Contoh di atas mencipta tiga lajur yang sama lebar pada peranti kecil, sederhana, besar dan lebih besar menggunakan kelas grid kami yang telah ditetapkan. Lajur tersebut berpusat pada halaman dengan induk .container
.
Memecahkannya, berikut ialah cara ia berfungsi:
- Bekas menyediakan cara untuk memusatkan dan mendatar kandungan tapak anda. Gunakan
.container
untuk lebar piksel responsif atau.container-fluid
untukwidth: 100%
semua port pandangan dan saiz peranti. - Baris ialah pembalut untuk lajur. Setiap lajur mempunyai mendatar
padding
(dipanggil longkang) untuk mengawal ruang antara mereka. Inipadding
kemudiannya dilawan pada baris dengan margin negatif. Dengan cara ini, semua kandungan dalam lajur anda dijajarkan secara visual ke bawah sebelah kiri. - Dalam susun atur grid, kandungan mesti diletakkan dalam lajur dan hanya lajur yang boleh menjadi anak langsung baris.
- Terima kasih kepada flexbox, lajur grid tanpa dinyatakan
width
secara automatik akan susun atur sebagai lajur lebar yang sama. Sebagai contoh, empat kejadian.col-sm
setiap satu secara automatik akan menjadi 25% lebar dari titik putus kecil dan ke atas. Lihat bahagian lajur reka letak automatik untuk lebih banyak contoh. - Kelas lajur menunjukkan bilangan lajur yang anda ingin gunakan daripada kemungkinan 12 setiap baris. Jadi, jika anda mahukan tiga lajur yang sama lebar merentas, anda boleh menggunakan
.col-4
. - Lajur
width
s ditetapkan dalam peratusan, jadi ia sentiasa cair dan bersaiz berbanding dengan elemen induknya. - Lajur mempunyai mendatar
padding
untuk membuat longkang antara lajur individu, walau bagaimanapun, anda boleh mengalih keluarmargin
daripada baris danpadding
dari lajur dengan.no-gutters
pada.row
. - Untuk menjadikan grid responsif, terdapat lima titik putus grid, satu untuk setiap titik putus responsif : semua titik putus (lebih kecil), kecil, sederhana, besar dan lebih besar.
- Titik putus grid adalah berdasarkan pertanyaan media lebar minimum, bermakna ia digunakan pada satu titik putus itu dan semua yang berada di atasnya (cth,
.col-sm-4
digunakan pada peranti kecil, sederhana, besar dan lebih besar, tetapi bukanxs
titik putus pertama). - Anda boleh menggunakan kelas grid yang dipratentukan (seperti
.col-4
) atau campuran Sass untuk lebih banyak penanda semantik.
Berhati-hati dengan pengehadan dan pepijat di sekeliling flexbox , seperti ketidakupayaan untuk menggunakan beberapa elemen HTML sebagai bekas fleksibel .
Walaupun Bootstrap menggunakan em
s atau rem
s untuk menentukan kebanyakan saiz, px
s digunakan untuk titik putus grid dan lebar bekas. Ini kerana lebar port pandangan adalah dalam piksel dan tidak berubah dengan saiz fon .
Lihat cara aspek sistem grid Bootstrap berfungsi merentas berbilang peranti dengan jadual yang berguna.
Lebih kecil <576px |
Kecil ≥576px |
Sederhana ≥768px |
Besar ≥992px |
Lebih besar ≥1200px |
|
---|---|---|---|---|---|
Lebar bekas maksimum | Tiada (auto) | 540px | 720px | 960px | 1140px |
Awalan kelas | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
# lajur | 12 | ||||
Lebar longkang | 30px (15px pada setiap sisi lajur) | ||||
Nestable | ya | ||||
Susunan lajur | ya |
Gunakan kelas lajur khusus titik putus untuk saiz lajur yang mudah tanpa kelas bernombor eksplisit seperti .col-sm-6
.
Sebagai contoh, berikut ialah dua reka letak grid yang digunakan pada setiap peranti dan port pandangan, dari xs
hingga xl
. Tambahkan sebarang bilangan kelas tanpa unit untuk setiap titik putus yang anda perlukan dan setiap lajur akan mempunyai lebar yang sama.
<div class="container">
<div class="row">
<div class="col">
1 of 2
</div>
<div class="col">
2 of 2
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col">
2 of 3
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Lajur yang sama lebar boleh dipecahkan kepada berbilang baris, tetapi terdapat pepijat Safari flexbox yang menghalangnya daripada berfungsi tanpa eksplisit flex-basis
atau border
. Terdapat penyelesaian untuk versi penyemak imbas yang lebih lama, tetapi ia tidak sepatutnya diperlukan jika anda dikemas kini.
<div class="container">
<div class="row">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="w-100"></div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
Reka letak automatik untuk lajur grid flexbox juga bermakna anda boleh menetapkan lebar satu lajur dan mempunyai saiz lajur adik-beradik secara automatik di sekelilingnya. Anda boleh menggunakan kelas grid yang dipratentukan (seperti yang ditunjukkan di bawah), campuran grid atau lebar sebaris. Ambil perhatian bahawa lajur lain akan mengubah saiz tidak kira lebar lajur tengah.
<div class="container">
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-6">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-5">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Gunakan col-{breakpoint}-auto
kelas untuk saiz lajur berdasarkan lebar semula jadi kandungannya.
<div class="container">
<div class="row justify-content-md-center">
<div class="col col-lg-2">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
</div>
Buat lajur sama lebar yang menjangkau berbilang baris dengan memasukkan .w-100
lajur di mana anda mahu lajur dipecahkan ke baris baharu. Jadikan rehat responsif dengan mencampurkan .w-100
dengan beberapa utiliti paparan responsif .
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="w-100"></div>
<div class="col">col</div>
<div class="col">col</div>
</div>
Grid Bootstrap termasuk lima peringkat kelas yang telah ditetapkan untuk membina reka letak responsif yang kompleks. Sesuaikan saiz lajur anda pada peranti yang lebih kecil, kecil, sederhana, besar atau lebih besar mengikut cara yang anda rasa sesuai.
Untuk grid yang sama daripada peranti terkecil hingga terbesar, gunakan kelas .col
dan .col-*
. Tentukan kelas bernombor apabila anda memerlukan lajur bersaiz khusus; jika tidak, sila berpegang pada .col
.
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
</div>
<div class="row">
<div class="col-8">col-8</div>
<div class="col-4">col-4</div>
</div>
Menggunakan satu set .col-sm-*
kelas, anda boleh mencipta sistem grid asas yang bermula disusun sebelum menjadi mendatar dengan pada titik putus kecil ( sm
).
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
Tidak mahu lajur anda hanya disusun dalam beberapa peringkat grid? Gunakan gabungan kelas yang berbeza untuk setiap peringkat mengikut keperluan. Lihat contoh di bawah untuk mendapatkan idea yang lebih baik tentang cara semuanya berfungsi.
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-12 col-md-8">.col-12 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
Gunakan utiliti penjajaran flexbox untuk menjajarkan lajur secara menegak dan mendatar.
<div class="container">
<div class="row align-items-start">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
<div class="row align-items-center">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
<div class="row align-items-end">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col align-self-start">
One of three columns
</div>
<div class="col align-self-center">
One of three columns
</div>
<div class="col align-self-end">
One of three columns
</div>
</div>
</div>
<div class="container">
<div class="row justify-content-start">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-center">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-end">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-around">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-between">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
</div>
Parit antara lajur dalam kelas grid kami yang telah ditetapkan boleh dialihkan dengan .no-gutters
. Ini mengalih keluar s negatif margin
daripada .row
dan mendatar padding
daripada semua lajur kanak-kanak segera.
Berikut ialah kod sumber untuk mencipta gaya ini. Ambil perhatian bahawa penggantian lajur diskop kepada hanya lajur anak pertama dan disasarkan melalui pemilih atribut . Walaupun ini menjana pemilih yang lebih khusus, pelapik lajur masih boleh disesuaikan lagi dengan utiliti jarak .
Perlukan reka bentuk tepi ke tepi? Gugurkan ibu bapa .container
atau .container-fluid
.
Dalam amalan, inilah rupanya. Harap maklum bahawa anda boleh terus menggunakan ini dengan semua kelas grid pratakrif lain (termasuk lebar lajur, peringkat responsif, susunan semula dan banyak lagi).
<div class="row no-gutters">
<div class="col-12 col-sm-6 col-md-8">.col-12 .col-sm-6 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
Jika lebih daripada 12 lajur diletakkan dalam satu baris, setiap kumpulan lajur tambahan akan, sebagai satu unit, membalut pada baris baharu.
Sejak 9 + 4 = 13 > 12, div lebar 4 lajur ini akan dibalut pada baris baharu sebagai satu unit bersebelahan.
Lajur berikutnya diteruskan di sepanjang baris baharu.
<div class="row">
<div class="col-9">.col-9</div>
<div class="col-4">.col-4<br>Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
<div class="col-6">.col-6<br>Subsequent columns continue along the new line.</div>
</div>
Memecahkan lajur kepada baris baharu dalam flexbox memerlukan penggodaman kecil: tambah elemen dengan mana- width: 100%
mana sahaja anda mahu membungkus lajur anda ke baris baharu. Biasanya ini dicapai dengan berbilang .row
s, tetapi tidak setiap kaedah pelaksanaan boleh mengambil kira ini.
<div class="row">
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<!-- Force next columns to break to new line -->
<div class="w-100"></div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
</div>
Anda juga boleh menggunakan rehat ini pada titik putus tertentu dengan utiliti paparan responsif kami .
<div class="row">
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<!-- Force next columns to break to new line at md breakpoint and up -->
<div class="w-100 d-none d-md-block"></div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
</div>
Gunakan .order-
kelas untuk mengawal susunan visual kandungan anda. Kelas ini responsif, jadi anda boleh menetapkan order
titik putus mengikut (cth, .order-1.order-md-2
). Termasuk sokongan untuk 1
melalui 12
semua lima peringkat grid.
<div class="container">
<div class="row">
<div class="col">
First, but unordered
</div>
<div class="col order-12">
Second, but last
</div>
<div class="col order-1">
Third, but first
</div>
</div>
</div>
Terdapat juga kelas responsif .order-first
dan .order-last
yang menukar order
elemen dengan menggunakan order: -1
dan order: 13
( order: $columns + 1
), masing-masing. Kelas ini juga boleh dicampur dengan .order-*
kelas bernombor mengikut keperluan.
<div class="container">
<div class="row">
<div class="col order-last">
First, but last
</div>
<div class="col">
Second, but unordered
</div>
<div class="col order-first">
Third, but first
</div>
</div>
</div>
Anda boleh mengimbangi lajur grid dalam dua cara: .offset-
kelas grid responsif kami dan utiliti margin kami . Kelas grid bersaiz untuk memadankan lajur manakala margin lebih berguna untuk susun atur pantas dengan lebar offset berubah-ubah.
Alihkan lajur ke kanan menggunakan .offset-md-*
kelas. Kelas ini meningkatkan margin kiri lajur dengan *
lajur. Sebagai contoh, .offset-md-4
bergerak .col-md-4
ke atas empat lajur.
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
</div>
<div class="row">
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div>
</div>
Selain mengosongkan lajur pada titik putus responsif, anda mungkin perlu menetapkan semula offset. Lihat ini dalam tindakan dalam contoh grid .
<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
<div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
</div>
Dengan beralih ke flexbox dalam v4, anda boleh menggunakan utiliti margin seperti .mr-auto
memaksa lajur adik-beradik menjauhi satu sama lain.
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
</div>
<div class="row">
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
</div>
<div class="row">
<div class="col-auto mr-auto">.col-auto .mr-auto</div>
<div class="col-auto">.col-auto</div>
</div>
Untuk menyarangkan kandungan anda dengan grid lalai, tambahkan lajur baharu .row
dan set .col-sm-*
lajur dalam .col-sm-*
lajur sedia ada. Baris bersarang hendaklah mengandungi satu set lajur yang menambah sehingga 12 atau kurang (tidak diperlukan anda menggunakan kesemua 12 lajur yang tersedia).
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-8 col-sm-6">
Level 2: .col-8 .col-sm-6
</div>
<div class="col-4 col-sm-6">
Level 2: .col-4 .col-sm-6
</div>
</div>
</div>
</div>
Apabila menggunakan fail Sass sumber Bootstrap, anda mempunyai pilihan untuk menggunakan pembolehubah dan campuran Sass untuk membuat reka letak halaman tersuai, semantik dan responsif. Kelas grid pratakrif kami menggunakan pembolehubah dan campuran yang sama ini untuk menyediakan keseluruhan suite kelas sedia untuk digunakan untuk reka letak responsif pantas.
Pembolehubah dan peta menentukan bilangan lajur, lebar longkang dan titik pertanyaan media untuk memulakan lajur terapung. Kami menggunakan ini untuk menjana kelas grid pratakrif yang didokumenkan di atas, serta untuk campuran tersuai yang disenaraikan di bawah.
Campuran digunakan bersama-sama dengan pembolehubah grid untuk menjana CSS semantik untuk lajur grid individu.
Anda boleh mengubah suai pembolehubah kepada nilai tersuai anda sendiri, atau hanya gunakan campuran dengan nilai lalainya. Berikut ialah contoh menggunakan tetapan lalai untuk membuat reka letak dua lajur dengan jurang antara.
<div class="example-container">
<div class="example-row">
<div class="example-content-main">Main content</div>
<div class="example-content-secondary">Secondary content</div>
</div>
</div>
Menggunakan pembolehubah dan peta Sass grid terbina dalam kami, anda boleh menyesuaikan sepenuhnya kelas grid yang dipratentukan. Tukar bilangan peringkat, dimensi pertanyaan media dan lebar bekas—kemudian susun semula.
Bilangan lajur grid boleh diubah suai melalui pembolehubah Sass. $grid-columns
digunakan untuk menjana lebar (dalam peratus) setiap lajur individu sambil $grid-gutter-width
membenarkan lebar khusus titik putus yang dibahagikan sama rata merentas padding-left
dan padding-right
untuk longkang lajur.
Melangkaui lajur itu sendiri, anda juga boleh menyesuaikan bilangan peringkat grid. Jika anda mahu hanya empat peringkat grid, anda akan mengemas kini $grid-breakpoints
dan $container-max-widths
kepada sesuatu seperti ini:
Apabila membuat sebarang perubahan pada pembolehubah atau peta Sass, anda perlu menyimpan perubahan anda dan menyusun semula. Melakukannya akan mengeluarkan set kelas grid pratakrif baharu untuk lebar lajur, offset dan pesanan. Utiliti keterlihatan responsif juga akan dikemas kini untuk menggunakan titik putus tersuai. Pastikan untuk menetapkan nilai grid dalam px
(bukan rem
, em
, atau %
).