Butang
Gunakan gaya butang tersuai Bootstrap untuk tindakan dalam bentuk, dialog dan banyak lagi dengan sokongan untuk berbilang saiz, keadaan dan banyak lagi.
Contoh
Bootstrap termasuk beberapa gaya butang yang dipratentukan, masing-masing memenuhi tujuan semantiknya sendiri, dengan beberapa tambahan yang diberikan untuk lebih kawalan.
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>
Menyampaikan makna kepada teknologi bantuan
Menggunakan warna untuk menambah makna hanya memberikan petunjuk visual, yang tidak akan disampaikan kepada pengguna teknologi bantuan - seperti pembaca skrin. Pastikan maklumat yang dilambangkan dengan warna sama ada jelas daripada kandungan itu sendiri (cth teks yang boleh dilihat), atau disertakan melalui cara alternatif, seperti teks tambahan yang tersembunyi dengan .visually-hidden
kelas.
Lumpuhkan pembalut teks
Jika anda tidak mahu teks butang dibalut, anda boleh menambah .text-nowrap
kelas pada butang. Dalam Sass, anda boleh menetapkan $btn-white-space: nowrap
untuk melumpuhkan pembalut teks untuk setiap butang.
Tag butang
Kelas .btn
direka bentuk untuk digunakan dengan <button>
elemen. Walau bagaimanapun, anda juga boleh menggunakan kelas <a>
atau <input>
elemen ini (walaupun sesetengah penyemak imbas mungkin menggunakan pemaparan yang berbeza sedikit).
Apabila menggunakan kelas butang pada <a>
elemen yang digunakan untuk mencetuskan kefungsian dalam halaman (seperti kandungan runtuh), dan bukannya memaut ke halaman atau bahagian baharu dalam halaman semasa, pautan ini harus diberikan role="button"
untuk menyampaikan tujuannya dengan sewajarnya kepada teknologi bantuan seperti pembaca skrin.
<a class="btn btn-primary" href="#" role="button">Link</a>
<button class="btn btn-primary" type="submit">Button</button>
<input class="btn btn-primary" type="button" value="Input">
<input class="btn btn-primary" type="submit" value="Submit">
<input class="btn btn-primary" type="reset" value="Reset">
Butang garis besar
Memerlukan butang, tetapi bukan warna latar belakang yang besar yang mereka bawa? Gantikan kelas pengubah suai lalai dengan kelas .btn-outline-*
untuk mengalih keluar semua imej latar belakang dan warna pada sebarang butang.
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-outline-success">Success</button>
<button type="button" class="btn btn-outline-danger">Danger</button>
<button type="button" class="btn btn-outline-warning">Warning</button>
<button type="button" class="btn btn-outline-info">Info</button>
<button type="button" class="btn btn-outline-light">Light</button>
<button type="button" class="btn btn-outline-dark">Dark</button>
Saiz
Inginkan butang yang lebih besar atau lebih kecil? Tambah .btn-lg
atau .btn-sm
untuk saiz tambahan.
<button type="button" class="btn btn-primary btn-lg">Large button</button>
<button type="button" class="btn btn-secondary btn-lg">Large button</button>
<button type="button" class="btn btn-primary btn-sm">Small button</button>
<button type="button" class="btn btn-secondary btn-sm">Small button</button>
Anda juga boleh melancarkan saiz tersuai anda sendiri dengan pembolehubah CSS:
<button type="button" class="btn btn-primary"
style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;">
Custom button
</button>
Keadaan kurang upaya
Jadikan butang kelihatan tidak aktif dengan menambahkan disabled
atribut boolean pada mana-mana <button>
elemen. Butang yang dilumpuhkan telah pointer-events: none
digunakan, menghalang tuding dan keadaan aktif daripada dicetuskan.
<button type="button" class="btn btn-primary" disabled>Primary button</button>
<button type="button" class="btn btn-secondary" disabled>Button</button>
<button type="button" class="btn btn-outline-primary" disabled>Primary button</button>
<button type="button" class="btn btn-outline-secondary" disabled>Button</button>
Butang dilumpuhkan menggunakan <a>
elemen berkelakuan agak berbeza:
<a>
s tidak menyokongdisabled
atribut, jadi anda mesti menambah.disabled
kelas untuk menjadikannya kelihatan dilumpuhkan secara visual.- Beberapa gaya mesra masa depan disertakan untuk melumpuhkan semua
pointer-events
pada butang sauh. - Butang yang dilumpuhkan menggunakan
<a>
harus termasukaria-disabled="true"
atribut untuk menunjukkan keadaan elemen kepada teknologi bantuan. - Butang yang dilumpuhkan menggunakan
<a>
tidak harus termasukhref
atribut.
<a class="btn btn-primary disabled" role="button" aria-disabled="true">Primary link</a>
<a class="btn btn-secondary disabled" role="button" aria-disabled="true">Link</a>
Kaveat fungsi pautan
Untuk menampung kes di mana anda perlu menyimpan href
atribut pada pautan yang dilumpuhkan, .disabled
kelas menggunakan pointer-events: none
untuk cuba melumpuhkan fungsi pautan <a>
s. Ambil perhatian bahawa sifat CSS ini belum lagi diseragamkan untuk HTML, tetapi semua penyemak imbas moden menyokongnya. Selain itu, walaupun dalam penyemak imbas yang menyokong pointer-events: none
, navigasi papan kekunci kekal tidak terjejas, bermakna pengguna papan kekunci yang kelihatan dan pengguna teknologi bantuan masih boleh mengaktifkan pautan ini. Jadi untuk selamat, sebagai tambahan kepada aria-disabled="true"
, sertakan tabindex="-1"
atribut pada pautan ini untuk menghalangnya daripada menerima fokus papan kekunci dan menggunakan JavaScript tersuai untuk melumpuhkan fungsinya sama sekali.
<a href="#" class="btn btn-primary disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
<a href="#" class="btn btn-secondary disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>
Sekat butang
Cipta tindanan responsif "butang blok" lebar penuh seperti yang terdapat dalam Bootstrap 4 dengan gabungan utiliti paparan dan jurang kami. Dengan menggunakan utiliti dan bukannya kelas khusus butang, kami mempunyai kawalan yang lebih besar ke atas jarak, penjajaran dan gelagat responsif.
<div class="d-grid gap-2">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Di sini kami mencipta variasi responsif, bermula dengan butang bertindan menegak sehingga md
titik putus, di mana .d-md-block
menggantikan .d-grid
kelas, sekali gus membatalkan gap-2
utiliti. Ubah saiz pelayar anda untuk melihatnya berubah.
<div class="d-grid gap-2 d-md-block">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Anda boleh melaraskan lebar butang blok anda dengan kelas lebar lajur grid. Contohnya, untuk "butang blok" separuh lebar, gunakan .col-6
. Pusatkannya secara mendatar dengan .mx-auto
, juga.
<div class="d-grid gap-2 col-6 mx-auto">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Utiliti tambahan boleh digunakan untuk melaraskan penjajaran butang apabila mendatar. Di sini kami telah mengambil contoh responsif kami sebelum ini dan menambah beberapa utiliti fleksibel dan utiliti margin pada butang untuk menjajarkan butang ke kanan apabila ia tidak lagi disusun.
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
<button class="btn btn-primary me-md-2" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Plugin butang
Pemalam butang membolehkan anda mencipta butang togol hidup/mati yang mudah.
Togol keadaan
Tambahkan data-bs-toggle="button"
untuk menogol keadaan butang active
. Jika anda pratogol butang, anda mesti menambah .active
kelas secara manual dan aria-pressed="true"
memastikan ia disampaikan dengan sewajarnya kepada teknologi bantuan.
<button type="button" class="btn btn-primary" data-bs-toggle="button">Toggle button</button>
<button type="button" class="btn btn-primary active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button>
<button type="button" class="btn btn-primary" disabled data-bs-toggle="button">Disabled toggle button</button>
<a href="#" class="btn btn-primary" role="button" data-bs-toggle="button">Toggle link</a>
<a href="#" class="btn btn-primary active" role="button" data-bs-toggle="button" aria-pressed="true">Active toggle link</a>
<a class="btn btn-primary disabled" aria-disabled="true" role="button" data-bs-toggle="button">Disabled toggle link</a>
Kaedah
Anda boleh membuat contoh butang dengan pembina butang, sebagai contoh:
const bsButton = new bootstrap.Button('#myButton')
Kaedah | Penerangan |
---|---|
dispose |
Memusnahkan butang elemen. (Mengalih keluar data yang disimpan pada elemen DOM) |
getInstance |
Kaedah statik yang membolehkan anda mendapatkan contoh butang yang dikaitkan dengan elemen DOM, anda boleh menggunakannya seperti ini: bootstrap.Button.getInstance(element) . |
getOrCreateInstance |
Kaedah statik yang mengembalikan contoh butang yang dikaitkan dengan elemen DOM atau mencipta yang baharu sekiranya ia tidak dimulakan. Anda boleh menggunakannya seperti ini: bootstrap.Button.getOrCreateInstance(element) . |
toggle |
Togol keadaan tolak. Memberi butang rupa bahawa ia telah diaktifkan. |
Contohnya, untuk menogol semua butang
document.querySelectorAll('.btn').forEach(buttonElement => {
const button = bootstrap.Button.getOrCreateInstance(buttonElement)
button.toggle()
})
CSS
Pembolehubah
Ditambah dalam v5.2.0Sebagai sebahagian daripada pendekatan pembolehubah CSS Bootstrap yang sedang berkembang, butang kini menggunakan pembolehubah CSS tempatan hidup .btn
untuk penyesuaian masa nyata yang dipertingkatkan. Nilai untuk pembolehubah CSS ditetapkan melalui Sass, jadi penyesuaian Sass masih disokong juga.
--#{$prefix}btn-padding-x: #{$btn-padding-x};
--#{$prefix}btn-padding-y: #{$btn-padding-y};
--#{$prefix}btn-font-family: #{$btn-font-family};
@include rfs($btn-font-size, --#{$prefix}btn-font-size);
--#{$prefix}btn-font-weight: #{$btn-font-weight};
--#{$prefix}btn-line-height: #{$btn-line-height};
--#{$prefix}btn-color: #{$body-color};
--#{$prefix}btn-bg: transparent;
--#{$prefix}btn-border-width: #{$btn-border-width};
--#{$prefix}btn-border-color: transparent;
--#{$prefix}btn-border-radius: #{$btn-border-radius};
--#{$prefix}btn-hover-border-color: transparent;
--#{$prefix}btn-box-shadow: #{$btn-box-shadow};
--#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
--#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
Setiap .btn-*
kelas pengubah suai mengemas kini pembolehubah CSS yang sesuai untuk meminimumkan peraturan CSS tambahan dengan button-variant()
, button-outline-variant()
, dan button-size()
campuran kami.
Berikut ialah contoh membina .btn-*
kelas pengubah suai tersuai seperti yang kami lakukan untuk butang unik pada dokumen kami dengan menugaskan semula pembolehubah CSS Bootstrap dengan campuran pembolehubah CSS dan Sass kami sendiri.
.btn-bd-primary {
--bs-btn-font-weight: 600;
--bs-btn-color: var(--bs-white);
--bs-btn-bg: var(--bd-violet);
--bs-btn-border-color: var(--bd-violet);
--bs-btn-border-radius: .5rem;
--bs-btn-hover-color: var(--bs-white);
--bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
--bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
--bs-btn-active-color: var(--bs-btn-hover-color);
--bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
--bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
}
Pembolehubah Sass
$btn-padding-y: $input-btn-padding-y;
$btn-padding-x: $input-btn-padding-x;
$btn-font-family: $input-btn-font-family;
$btn-font-size: $input-btn-font-size;
$btn-line-height: $input-btn-line-height;
$btn-white-space: null; // Set to `nowrap` to prevent text wrapping
$btn-padding-y-sm: $input-btn-padding-y-sm;
$btn-padding-x-sm: $input-btn-padding-x-sm;
$btn-font-size-sm: $input-btn-font-size-sm;
$btn-padding-y-lg: $input-btn-padding-y-lg;
$btn-padding-x-lg: $input-btn-padding-x-lg;
$btn-font-size-lg: $input-btn-font-size-lg;
$btn-border-width: $input-btn-border-width;
$btn-font-weight: $font-weight-normal;
$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075);
$btn-focus-width: $input-btn-focus-width;
$btn-focus-box-shadow: $input-btn-focus-box-shadow;
$btn-disabled-opacity: .65;
$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125);
$btn-link-color: var(--#{$prefix}link-color);
$btn-link-hover-color: var(--#{$prefix}link-hover-color);
$btn-link-disabled-color: $gray-600;
// Allows for customizing button radius independently from global border radius
$btn-border-radius: $border-radius;
$btn-border-radius-sm: $border-radius-sm;
$btn-border-radius-lg: $border-radius-lg;
$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
$btn-hover-bg-shade-amount: 15%;
$btn-hover-bg-tint-amount: 15%;
$btn-hover-border-shade-amount: 20%;
$btn-hover-border-tint-amount: 10%;
$btn-active-bg-shade-amount: 20%;
$btn-active-bg-tint-amount: 20%;
$btn-active-border-shade-amount: 25%;
$btn-active-border-tint-amount: 10%;
Campuran Sass
Terdapat tiga campuran untuk butang: adunan varian butang dan garis luar butang (kedua-duanya berdasarkan $theme-colors
), serta campuran saiz butang.
@mixin button-variant(
$background,
$border,
$color: color-contrast($background),
$hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
$hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
$hover-color: color-contrast($hover-background),
$active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
$active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
$active-color: color-contrast($active-background),
$disabled-background: $background,
$disabled-border: $border,
$disabled-color: color-contrast($disabled-background)
) {
--#{$prefix}btn-color: #{$color};
--#{$prefix}btn-bg: #{$background};
--#{$prefix}btn-border-color: #{$border};
--#{$prefix}btn-hover-color: #{$hover-color};
--#{$prefix}btn-hover-bg: #{$hover-background};
--#{$prefix}btn-hover-border-color: #{$hover-border};
--#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
--#{$prefix}btn-active-color: #{$active-color};
--#{$prefix}btn-active-bg: #{$active-background};
--#{$prefix}btn-active-border-color: #{$active-border};
--#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
--#{$prefix}btn-disabled-color: #{$disabled-color};
--#{$prefix}btn-disabled-bg: #{$disabled-background};
--#{$prefix}btn-disabled-border-color: #{$disabled-border};
}
@mixin button-outline-variant(
$color,
$color-hover: color-contrast($color),
$active-background: $color,
$active-border: $color,
$active-color: color-contrast($active-background)
) {
--#{$prefix}btn-color: #{$color};
--#{$prefix}btn-border-color: #{$color};
--#{$prefix}btn-hover-color: #{$color-hover};
--#{$prefix}btn-hover-bg: #{$active-background};
--#{$prefix}btn-hover-border-color: #{$active-border};
--#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
--#{$prefix}btn-active-color: #{$active-color};
--#{$prefix}btn-active-bg: #{$active-background};
--#{$prefix}btn-active-border-color: #{$active-border};
--#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
--#{$prefix}btn-disabled-color: #{$color};
--#{$prefix}btn-disabled-bg: transparent;
--#{$prefix}btn-disabled-border-color: #{$color};
--#{$prefix}gradient: none;
}
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
--#{$prefix}btn-padding-y: #{$padding-y};
--#{$prefix}btn-padding-x: #{$padding-x};
@include rfs($font-size, --#{$prefix}btn-font-size);
--#{$prefix}btn-border-radius: #{$border-radius};
}
gelung Sass
Varian butang (untuk butang biasa dan garis besar) menggunakan campuran masing-masing dengan $theme-colors
peta kami untuk menjana kelas pengubah suai dalam scss/_buttons.scss
.
@each $color, $value in $theme-colors {
.btn-#{$color} {
@if $color == "light" {
@include button-variant(
$value,
$value,
$hover-background: shade-color($value, $btn-hover-bg-shade-amount),
$hover-border: shade-color($value, $btn-hover-border-shade-amount),
$active-background: shade-color($value, $btn-active-bg-shade-amount),
$active-border: shade-color($value, $btn-active-border-shade-amount)
);
} @else if $color == "dark" {
@include button-variant(
$value,
$value,
$hover-background: tint-color($value, $btn-hover-bg-tint-amount),
$hover-border: tint-color($value, $btn-hover-border-tint-amount),
$active-background: tint-color($value, $btn-active-bg-tint-amount),
$active-border: tint-color($value, $btn-active-border-tint-amount)
);
} @else {
@include button-variant($value, $value);
}
}
}
@each $color, $value in $theme-colors {
.btn-outline-#{$color} {
@include button-outline-variant($value);
}
}