Knäppercher
Benotzt Bootstrap seng personaliséiert Knäppchenstiler fir Aktiounen a Formen, Dialogen a méi mat Ënnerstëtzung fir verschidde Gréissten, Staaten a méi.
Beispiller
Bootstrap enthält verschidde virdefinéiert Knäppercher, jidderee servéiert säin eegene semanteschen Zweck, mat e puer Extrae fir méi Kontroll geworf.
<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>
Bedeitung vun Hëllefstechnologien
D'Faarf benotze fir Bedeitung ze addéieren gëtt nëmmen eng visuell Indikatioun, déi net un d'Benotzer vun Assistenztechnologien vermëttelt gëtt - sou wéi Écran Lieser. Vergewëssert Iech datt d'Informatioun, déi mat der Faarf bezeechent gëtt, entweder offensichtlech aus dem Inhalt selwer ass (zB dem siichtbaren Text), oder duerch alternativ Mëttelen abegraff ass, sou wéi zousätzlech Text verstoppt mat der .visually-hidden
Klass.
Textverpackung auszeschalten
Wann Dir net wëllt datt de Knäppchen Text wéckelt, kënnt Dir d' .text-nowrap
Klass op de Knäppchen addéieren. A Sass kënnt Dir setzen $btn-white-space: nowrap
fir Textverpackung fir all Knäppchen auszeschalten.
Button Tags
D' .btn
Klassen sinn entwéckelt fir mam <button>
Element ze benotzen. Wéi och ëmmer, Dir kënnt dës Klassen och op Elementer benotzen <a>
( <input>
obwuel e puer Browser eng liicht aner Rendering applizéiere kënnen).
Wann Dir Knäppercher op <a>
Elementer benotzt, déi benotzt gi fir In-Säit Funktionalitéit auszeléisen (wéi Zesummebroch Inhalt), anstatt op nei Säiten oder Sektiounen op der aktueller Säit ze verlinken, sollten dës Linken e role="button"
ginn fir hiren Zweck an Assistenztechnologien ze vermëttelen, wéi z. Écran Lieser.
<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">
Outline Knäppchen
Braucht Dir e Knäppchen, awer net déi hefteg Hannergrondfaarwen déi se bréngen? Ersetzen d'Standardmodifikateur Klassen mat .btn-outline-*
deenen fir all Hannergrondbiller a Faarwen op all Knäppchen ze läschen.
<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>
Gréissten
Loscht op méi grouss oder méi kleng Knäppercher? Addéieren .btn-lg
oder .btn-sm
fir zousätzlech Gréissten.
<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>
Dir kënnt souguer Är eege personaliséiert Gréisst mat CSS Variablen rullen:
<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>
Behënnert Staat
Maacht Knäppercher inaktiv kucken andeems Dir de disabled
booleschen Attribut un all <button>
Element bäidréit. Behënnerte Knäppercher hunn pointer-events: none
ugewannt, verhënnert datt Hover an aktive Staaten ausléisen.
<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>
Behënnerte Knäppercher mat dem <a>
Element behuelen e bëssen anescht:
<a>
s Ënnerstëtzung net dendisabled
Attribut, also musst Dir d'.disabled
Klass addéieren fir se visuell behënnert ze maachen.- E puer zukünfteg frëndlech Stiler sinn abegraff fir alles
pointer-events
op Ankerknäppchen auszeschalten. - Behënnerte Knäppercher
<a>
sollen denaria-disabled="true"
Attribut enthalen fir den Zoustand vum Element un Hëllefstechnologien unzeginn. - Behënnert Knäppercher benotzt
<a>
sollenhref
den Attribut net enthalen .
<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>
Link Funktionalitéit Opgepasst
Fir Fäll ze decken wou Dir den href
Attribut op engem behënnerte Link behalen muss, .disabled
benotzt d'Klass pointer-events: none
fir ze probéieren d'Linkfunktionalitéit vun <a>
s auszeschalten. Bedenkt datt dës CSS Eegeschafte nach net standardiséiert ass fir HTML, awer all modern Browser ënnerstëtzen et. Zousätzlech, och a Browser déi ënnerstëtzen pointer-events: none
, bleift d'Tastaturnavigatioun net beaflosst, dat heescht datt seent Tastatur Benotzer an d'Benotzer vun Hëllefstechnologien nach ëmmer kënnen dës Linken aktivéieren. Also fir sécher ze sinn, zousätzlech zu aria-disabled="true"
, enthält och en tabindex="-1"
Attribut op dëse Linken fir ze verhënneren datt se Tastaturfokus kréien, a benotzt personaliséiert JavaScript fir hir Funktionalitéit komplett auszeschalten.
<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>
Block Knäppercher
Erstellt reaktiounsfäeger Stack vu voller Breet, "Blockknäppercher" wéi déi am Bootstrap 4 mat enger Mëschung vun eisem Display a Spalt Utilities. Andeems Dir Utilities benotzt anstatt Knäppchespezifesch Klassen, hu mir vill méi grouss Kontroll iwwer Abstand, Ausrichtung a reaktiounsfäeger Verhalen.
<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>
Hei kreéiere mir eng reaktiounsfäeger Variatioun, ugefaange mat vertikal gestapelte Knäppercher bis zum md
Breakpoint, wou .d-md-block
d'Klass ersetzt .d-grid
, sou datt d' gap-2
Utility nullifizéiert gëtt. Ännert d'Gréisst vun Ärem Browser fir se ze gesinn änneren.
<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>
Dir kënnt d'Breet vun Äre Block Knäppercher mat Gitter Kolonn Breet Klassen ajustéieren. Zum Beispill, fir eng hallef Breet "Block Button", benotzt .col-6
. Centre et horizontal mat .mx-auto
, ze.
<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>
Zousätzlech Utilities kënne benotzt ginn fir d'Ausrichtung vun de Knäppercher unzepassen wann se horizontal sinn. Hei hu mir eist viregt reaktiounsfäeger Beispill geholl an e puer Flex Utilities an e Margin Utility op de Knäppchen bäigefüügt fir d'Knäppercher richteg auszegläichen wann se net méi gestapelt sinn.
<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>
Knäppchen Plugin
De Knäppchen Plugin erlaabt Iech einfach On / Off Knäppercher ze kreéieren.
Toggle Staaten
Füügt fir den Zoustand data-bs-toggle="button"
vun engem Knäppchen ze active
wiesselen. Wann Dir e Knäpp pre-toggelt, musst Dir d' .active
Klass manuell derbäisetzen a aria-pressed="true"
fir sécherzestellen datt se entspriechend un Assistenztechnologien vermëttelt gëtt.
<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>
Methoden
Dir kënnt e Knäppcheninstanz mam Knäppekonstruktor erstellen, zum Beispill:
const bsButton = new bootstrap.Button('#myButton')
Method | Beschreiwung |
---|---|
dispose |
Zerstéiert en Element Knäppchen. (läscht gespäichert Daten am DOM Element) |
getInstance |
Statesch Method déi Iech erlaabt d'Knäppcheninstanz mat engem DOM-Element verbonnen ze kréien, Dir kënnt et esou benotzen bootstrap.Button.getInstance(element) :. |
getOrCreateInstance |
Statesch Method déi e Knäppcheinstanz mat engem DOM Element assoziéiert zréckkënnt oder en neit erstellt am Fall datt et net initialiséiert gouf. Dir kënnt et esou benotzen bootstrap.Button.getOrCreateInstance(element) :. |
toggle |
Wiesselt Push Staat. Gëtt de Knäppchen d'Erscheinung datt et aktivéiert gouf. |
Zum Beispill, fir all Knäppercher ze wiesselen
document.querySelectorAll('.btn').forEach(buttonElement => {
const button = bootstrap.Button.getOrCreateInstance(buttonElement)
button.toggle()
})
CSS
Variablen
Dobäi an v5.2.0Als Deel vun der Entwécklung vu Bootstrap CSS Variablen Approche, benotze Knäpper elo lokal CSS Variablen op .btn
fir eng verstäerkte Echtzäit Personnalisatioun. Wäerter fir d'CSS Variablen ginn iwwer Sass gesat, sou datt Sass Personnalisatioun och nach ëmmer ënnerstëtzt gëtt.
--#{$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);
All .btn-*
Modifier Klass aktualiséiert déi entspriechend CSS Variablen fir zousätzlech CSS Reegele mat eise button-variant()
, button-outline-variant()
, a button-size()
Mixins ze minimiséieren.
Hei ass e Beispill fir eng personaliséiert .btn-*
Modifizéierungsklass ze bauen wéi mir fir d'Knäppercher eenzegaarteg fir eis Dokumenter maachen andeems Dir Bootstrap's CSS Variablen mat enger Mëschung vun eisen eegene CSS a Sass Variablen ëmgeet.
.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 Variablen
$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 mixins
Et ginn dräi Mixins fir Knäppercher: Knäppchen a Knäppchen Kontur Variant Mixins (souwuel baséiert op $theme-colors
), plus e Knäppchen Gréisst Mixin.
@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 Loops
Knäppevarianten (fir regelméisseg a Konturknäpper) benotzen hir jeeweileg Mixins mat eiser $theme-colors
Kaart fir d'Modifier Klassen an ze generéieren 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);
}
}