Gumbi
Uporabite Bootstrapove sloge gumbov po meri za dejanja v obrazcih, pogovornih oknih in več s podporo za več velikosti, stanj in več.
Primeri
Bootstrap vključuje več vnaprej določenih slogov gumbov, od katerih vsak služi svojemu semantičnemu namenu, z nekaj dodatki, dodanimi za večji nadzor.
<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>
Prenos pomena za podporne tehnologije
Uporaba barve za dodajanje pomena zagotavlja le vizualno indikacijo, ki ne bo posredovana uporabnikom podpornih tehnologij – kot so bralniki zaslona. Zagotovite, da so informacije, označene z barvo, očitne iz same vsebine (npr. vidno besedilo) ali pa so vključene z alternativnimi sredstvi, kot je dodatno besedilo, skrito z .visually-hidden
razredom.
Onemogoči prelom besedila
Če ne želite, da se besedilo gumba prelomi, lahko .text-nowrap
gumbu dodate razred. V Sassu lahko nastavite, $btn-white-space: nowrap
da onemogočite prelom besedila za vsak gumb.
Oznake gumbov
Razredi .btn
so zasnovani za uporabo z <button>
elementom. Vendar pa lahko te razrede uporabite tudi na <a>
ali <input>
elementih (čeprav lahko nekateri brskalniki uporabijo nekoliko drugačno upodabljanje).
Pri uporabi razredov gumbov na <a>
elementih, ki se uporabljajo za sprožitev funkcionalnosti na strani (na primer strnjevanje vsebine), namesto povezovanja do novih strani ali odsekov znotraj trenutne strani, je treba tem povezavam dodeliti, role="button"
da ustrezno posredujejo svoj namen podpornim tehnologijam, kot je npr. bralniki zaslona.
<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">
Orisni gumbi
Potrebujete gumb, vendar ne zajetnih barv ozadja, ki jih prinašajo? Zamenjajte privzete razrede modifikatorjev s .btn-outline-*
tistimi, ki odstranijo vse slike ozadja in barve na katerem koli gumbu.
<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>
Velikosti
Ste všeč večji ali manjši gumbi? Dodajte .btn-lg
ali .btn-sm
za dodatne velikosti.
<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>
S spremenljivkami CSS lahko celo določite svojo velikost po meri:
<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>
Onemogočeno stanje
Naj bodo gumbi videti neaktivni, tako da kateremu koli elementu dodate disabled
logični atribut . <button>
Onemogočeni gumbi so bili pointer-events: none
uporabljeni za in preprečujejo sprožitev lebdenja in aktivnih stanj.
<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>
Onemogočeni gumbi, ki uporabljajo <a>
element, se obnašajo nekoliko drugače:
<a>
s ne podpirajodisabled
atributa, zato morate dodati.disabled
razred, da bo vizualno videti onemogočen.- Vključeni so nekateri slogi, prijazni do prihodnosti, da onemogočite vse
pointer-events
sidrne gumbe. - Uporaba onemogočenih gumbov
<a>
mora vključevatiaria-disabled="true"
atribut za označevanje stanja elementa za podporne tehnologije. - Onemogočeni gumbi z uporabo
<a>
ne smejo vključevatihref
atributa.
<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>
Opozorilo glede funkcionalnosti povezave
Za pokrivanje primerov, ko morate obdržati href
atribut na onemogočeni povezavi, .disabled
razred uporablja pointer-events: none
za poskus onemogočanja funkcije povezave <a>
s. Upoštevajte, da ta lastnost CSS še ni standardizirana za HTML, vendar jo podpirajo vsi sodobni brskalniki. Poleg tega tudi v brskalnikih, ki podpirajo pointer-events: none
, navigacija s tipkovnico ostane nespremenjena, kar pomeni, da bodo lahko videči uporabniki tipkovnice in uporabniki podpornih tehnologij še vedno aktivirali te povezave. Da bi bili varni, v te povezave aria-disabled="true"
vključite tudi tabindex="-1"
atribut, da preprečite, da bi prejele fokus s tipkovnico, in uporabite JavaScript po meri, da v celoti onemogočite njihovo delovanje.
<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>
Gumbi za blokiranje
Ustvarite odzivne nize "blok gumbov" polne širine, kot so tisti v Bootstrap 4, z mešanico naših pripomočkov za prikaz in vrzeli. Z uporabo pripomočkov namesto razredov, specifičnih za gumbe, imamo veliko večji nadzor nad razmikom, poravnavo in odzivnim vedenjem.
<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>
Tukaj ustvarimo odzivno variacijo, začenši z navpično zloženimi gumbi do md
prelomne točke, kjer .d-md-block
nadomesti .d-grid
razred in tako izniči gap-2
pripomoček. Spremenite velikost brskalnika, da jih vidite.
<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>
Širino gumbov bloka lahko prilagodite z razredi širine stolpca mreže. Na primer, za "gumb za blokiranje" polovične širine uporabite .col-6
. Prav tako ga centrirajte vodoravno z .mx-auto
.
<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>
Dodatne pripomočke je mogoče uporabiti za prilagoditev poravnave gumbov, ko so vodoravni. Tu smo vzeli naš prejšnji odzivni primer in dodali nekaj pripomočkov za upogibanje in pripomoček za rob na gumbu za desno poravnavo gumbov, ko niso več zloženi.
<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>
Vtičnik za gumbe
Vtičnik gumbov vam omogoča ustvarjanje preprostih preklopnih gumbov za vklop/izklop.
Preklopi stanja
Dodaj data-bs-toggle="button"
za preklop stanja gumba active
. Če gumb vnaprej preklopite, morate .active
razred dodati ročno in aria-pressed="true"
zagotoviti, da je ustrezno posredovan podpornim tehnologijam.
<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>
Metode
Primerek gumba lahko ustvarite s konstruktorjem gumba, na primer:
const bsButton = new bootstrap.Button('#myButton')
Metoda | Opis |
---|---|
dispose |
Uniči gumb elementa. (Odstrani shranjene podatke v elementu DOM) |
getInstance |
Statično metodo, ki vam omogoča pridobitev primerka gumba, povezanega z elementom DOM, jo lahko uporabite takole: bootstrap.Button.getInstance(element) . |
getOrCreateInstance |
Statična metoda, ki vrne primerek gumba, povezanega z elementom DOM, ali ustvari novega, če ni bil inicializiran. Uporabite ga lahko takole: bootstrap.Button.getOrCreateInstance(element) . |
toggle |
Preklopi potisno stanje. Gumb daje videz, kot da je bil aktiviran. |
Na primer, za preklop vseh gumbov
document.querySelectorAll('.btn').forEach(buttonElement => {
const button = bootstrap.Button.getOrCreateInstance(buttonElement)
button.toggle()
})
CSS
Spremenljivke
Dodano v v5.2.0Kot del Bootstrapovega razvijajočega se pristopa spremenljivk CSS gumbi zdaj uporabljajo lokalne spremenljivke CSS .btn
za izboljšano prilagajanje v realnem času. Vrednosti za spremenljivke CSS so nastavljene prek Sass, tako da je še vedno podprto tudi prilagajanje Sass.
--#{$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);
Vsak .btn-*
modifikatorski razred posodobi ustrezne spremenljivke CSS, da minimizira dodatna pravila CSS z našimi button-variant()
, button-outline-variant()
in button-size()
mešanicami.
Tukaj je primer gradnje .btn-*
razreda modifikatorjev po meri, kot to počnemo za gumbe, ki so edinstveni za naše dokumente, s prerazporeditvijo spremenljivk CSS Bootstrapa z mešanico naših lastnih spremenljivk CSS in Sass.
.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%)};
}
Sass spremenljivke
$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%;
Sass mešanice
Obstajajo trije miksini za gumbe: miksini gumba in različice orisa gumba (oba temeljita na $theme-colors
), plus mešalnik velikosti gumba.
@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};
}
Sass zanke
Različice gumbov (za navadne in orisne gumbe) uporabljajo svoje ustrezne mešanice z našim $theme-colors
zemljevidom za ustvarjanje modifikatorskih razredov v 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);
}
}