Hnappar
Notaðu sérsniðna hnappastíl Bootstrap fyrir aðgerðir í eyðublöðum, gluggum og fleira með stuðningi fyrir margar stærðir, stöður og fleira.
Dæmi
Bootstrap inniheldur nokkra fyrirfram skilgreinda hnappastíla, sem hver þjónar sínum merkingarfræðilega tilgangi, með nokkrum aukahlutum til að fá meiri stjórn.
<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>
Að miðla merkingu til hjálpartækja
Notkun lita til að bæta við merkingu gefur aðeins sjónræna vísbendingu, sem verður ekki miðlað til notenda hjálpartækni - eins og skjálesara. Gakktu úr skugga um að upplýsingar sem merktar eru með litnum séu annaðhvort augljósar af innihaldinu sjálfu (td sýnilegum texta), eða séu innifaldar með öðrum hætti, svo sem viðbótartexta sem er falinn í .visually-hidden
bekknum.
Slökktu á textabroti
Ef þú vilt ekki að hnappatextinn hverfi, geturðu bætt .text-nowrap
bekknum við hnappinn. Í Sass geturðu stillt $btn-white-space: nowrap
á að slökkva á textaumbroti fyrir hvern hnapp.
Hnapparmerki
Flokkarnir .btn
eru hannaðir til að nota með <button>
frumefninu. Hins vegar geturðu líka notað þessa flokka á <a>
eða <input>
þætti (þó sumir vafrar gætu notað aðeins öðruvísi flutning).
Þegar hnappaflokkar eru notaðir á <a>
þætti sem eru notaðir til að kveikja á virkni síðunnar (eins og efni sem hrynur saman), frekar en að tengja við nýjar síður eða hluta á núverandi síðu, ætti að gefa þessum hlekkjum til role="button"
að koma tilgangi sínum á framfæri á viðeigandi hátt til hjálpartækni eins og skjálesarar.
<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">
Útlínuhnappar
Þarftu hnapp, en ekki stífu bakgrunnslitina sem þeir koma með? Skiptu út sjálfgefnum breytingaflokkum fyrir .btn-outline-*
þá til að fjarlægja allar bakgrunnsmyndir og liti á hvaða hnapp sem er.
<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>
Stærðir
Langar þig í stærri eða minni hnappa? Bæta við .btn-lg
eða .btn-sm
fyrir fleiri stærðir.
<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>
Þú getur jafnvel rúllað þinni eigin sérsniðnu stærð með CSS breytum:
<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>
Óvirkt ástand
Láttu hnappa líta út fyrir að vera óvirkir með því að bæta disabled
boolean eiginleikanum við hvaða <button>
frumefni sem er. Óvirkir hnappar hafa pointer-events: none
verið notaðir til að koma í veg fyrir að sveima og virkt ástand kvikni.
<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>
Óvirkir hnappar sem nota <a>
þáttinn hegða sér svolítið öðruvísi:
<a>
s styðja ekkidisabled
eigindina, svo þú verður að bæta við.disabled
bekknum til að láta hann líta út fyrir að vera óvirkur.- Sumir framtíðarvænir stílar eru innifaldir til að slökkva á öllu
pointer-events
á akkerihnappum. - Óvirkir hnappar sem nota
<a>
ættu að innihaldaaria-disabled="true"
eigindina til að gefa til kynna stöðu þáttarins fyrir hjálpartækni. - Óvirkir hnappar sem nota
<a>
ættu ekki að innihaldahref
eigindina.
<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>
Fyrirvari um tengivirkni
Til að ná yfir tilvik þar sem þú þarft að halda href
eigindinni á óvirkum hlekk, .disabled
notar flokkurinn pointer-events: none
til að reyna að slökkva á tengivirkni <a>
s. Athugaðu að þessi CSS eign er ekki enn staðlað fyrir HTML, en allir nútíma vafrar styðja það. Að auki, jafnvel í vöfrum sem styðja pointer-events: none
, er lyklaborðsleiðsögn óbreytt, sem þýðir að sjáandi lyklaborðsnotendur og notendur hjálpartækni munu enn geta virkjað þessa tengla. Svo til að vera öruggur skaltu, auk aria-disabled="true"
, einnig innihalda tabindex="-1"
eiginleika á þessum hlekkjum til að koma í veg fyrir að þeir fái lyklaborðsfókus, og notaðu sérsniðið JavaScript til að slökkva á virkni þeirra með öllu.
<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>
Blokkarhnappar
Búðu til móttækilega stafla af „blokkunarhnöppum“ í fullri breidd eins og í Bootstrap 4 með blöndu af skjá- og biltólum okkar. Með því að nota tól í stað hnappa tiltekinna flokka höfum við miklu meiri stjórn á bili, röðun og móttækilegri hegðun.
<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>
Hér búum við til móttækilegt afbrigði, sem byrjar með lóðrétt staflaðum hnöppum þar til md
brotpunkturinn .d-md-block
kemur í staðinn fyrir .d-grid
bekkinn og ógildir þannig gap-2
gagnsemina. Breyttu stærð vafrans til að sjá þá breytast.
<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>
Þú getur stillt breidd blokkarhnappanna með breiddarflokkum fyrir dálka. Til dæmis, fyrir hálfbreidd „blokkunarhnapp“, notaðu .col-6
. Miðaðu það líka lárétt með .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>
Hægt er að nota fleiri tól til að stilla röðun hnappa þegar þeir eru láréttir. Hér höfum við tekið fyrra móttækilegt dæmi okkar og bætt við nokkrum sveigjanlegum tólum og spássíuforriti á hnappinn til að stilla hnappana til hægri þegar þeir eru ekki lengur staflaðir.
<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>
Hnappa viðbót
Hnappaviðbótin gerir þér kleift að búa til einfalda kveikja/slökkvahnappa.
Skiptu um ríki
Bæta við data-bs-toggle="button"
til að skipta um stöðu hnapps active
. Ef þú ert að skipta um hnapp fyrirfram verður þú að bæta .active
bekknum við handvirkt og aria-pressed="true"
tryggja að hann sé fluttur á viðeigandi hátt til hjálpartækni.
<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>
Aðferðir
Þú getur búið til hnappatilvik með hnappasmiðnum, til dæmis:
const bsButton = new bootstrap.Button('#myButton')
Aðferð | Lýsing |
---|---|
dispose |
Eyðir hnappi frumefnis. (Fjarlægir vistuð gögn á DOM-einingunni) |
getInstance |
Statísk aðferð sem gerir þér kleift að fá hnappatilvikið tengt DOM frumefni, þú getur notað það svona: bootstrap.Button.getInstance(element) . |
getOrCreateInstance |
Statísk aðferð sem skilar hnappatilviki sem tengist DOM-einingu eða býr til nýjan ef hann var ekki frumstilltur. Þú getur notað það svona: bootstrap.Button.getOrCreateInstance(element) . |
toggle |
Skiptir á ýtastöðu. Gefur hnappinum það útlit að hann hafi verið virkjaður. |
Til dæmis til að skipta um alla hnappa
document.querySelectorAll('.btn').forEach(buttonElement => {
const button = bootstrap.Button.getOrCreateInstance(buttonElement)
button.toggle()
})
CSS
Breytur
Bætt við í v5.2.0Sem hluti af CSS breytum í þróun Bootstrap nálgun, nota hnappar nú staðbundnar CSS breytur á .btn
til að auka rauntíma aðlögun. Gildi fyrir CSS breyturnar eru stillt í gegnum Sass, þannig að Sass aðlögun er enn studd líka.
--#{$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);
Hver .btn-*
breytingaflokkur uppfærir viðeigandi CSS breytur til að lágmarka viðbótar CSS reglur með button-variant()
, button-outline-variant()
, og button-size()
blöndunum okkar.
Hér er dæmi um að byggja upp sérsniðinn .btn-*
breytingaflokk eins og við gerum fyrir hnappana sem eru einstakir fyrir skjölin okkar með því að endurúthluta CSS breytum Bootstrap með blöndu af okkar eigin CSS og Sass breytum.
.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 breytur
$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%;
Snilldar blöndur
Það eru þrjár blöndur fyrir hnappa: hnappa og hnappaútlínur afbrigði blöndunar (báðar byggðar á $theme-colors
), auk hnappastærðar blöndunar.
@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 lykkjur
Hnappafbrigði (fyrir venjulega hnappa og útlínur) nota viðkomandi blöndun með $theme-colors
kortinu okkar til að búa til breytingaflokkana í 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);
}
}