Wiesselt op den Haaptinhalt Wiesselt op d'Docs Navigatioun
in English

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-hiddenKlass.

Textverpackung auszeschalten

Wann Dir net wëllt datt de Knäppchen Text wéckelt, kënnt Dir d' .text-nowrapKlass op de Knäppchen addéieren. A Sass kënnt Dir setzen $btn-white-space: nowrapfir Textverpackung fir all Knäppchen auszeschalten.

Button Tags

D' .btnKlassen 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.

Link
<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>
E puer vun de Knäppercher benotzen eng relativ hell Virdergrondfaarf, a sollten nëmmen op engem donkelen Hannergrond benotzt ginn, fir genuch Kontrast ze hunn.

Gréissten

Loscht op méi grouss oder méi kleng Knäppercher? Addéieren .btn-lgoder .btn-smfir 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>

Behënnert Staat

Maacht Knäppercher inaktiv kucken andeems Dir de disabledbooleschen Attribut un all <button>Element bäidréit. Behënnerte Knäppercher hunn pointer-events: noneugewannt, verhënnert datt Hover an aktive Staaten ausléisen.

<button type="button" class="btn btn-lg btn-primary" disabled>Primary button</button>
<button type="button" class="btn btn-secondary btn-lg" disabled>Button</button>

Behënnerte Knäppercher mat dem <a>Element behuelen e bëssen anescht:

  • <a>s Ënnerstëtzung net den disabledAttribut, also musst Dir d' .disabledKlass addéieren fir se visuell behënnert ze maachen.
  • E puer zukünfteg frëndlech Stiler sinn abegraff fir alles pointer-eventsop Ankerknäppchen auszeschalten.
  • Behënnerte Knäppercher sollen den aria-disabled="true"Attribut enthalen fir den Zoustand vum Element un Assistenztechnologien unzeginn.
<a href="#" class="btn btn-primary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
<a href="#" class="btn btn-secondary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>

D' .disabledKlass benotzt pointer-events: nonefir ze probéieren d'Linkfunktionalitéit vu <a>s auszeschalten, awer dës CSS-Eegeschaft ass nach net standardiséiert. 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.

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 mdBreakpoint, wou .d-md-blockd'Klass ersetzt .d-grid, sou datt d' gap-2Utility 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.

Visuell sinn dës Toggle Buttons identesch mat de Checkbox Toggle Buttons . Wéi och ëmmer, si ginn duerch Assistenztechnologien anescht vermëttelt: d'Checkbox-Togles ginn vun de Bildschirmlieser als "gecheckt"/"net kontrolléiert" ugekënnegt (well se trotz hirer Erscheinung grondsätzlech nach Checkboxen sinn), wärend dës Toggle-Knäppercher als "Knäppchen" / "Knäppchen gedréckt". D'Wiel tëscht dësen zwou Approche hänkt vun der Aart vum Toggle of, deen Dir erstellt, an ob den Toggle Sënn fir d'Benotzer mécht wann se als Checkbox oder als aktuellen Knäppchen ugekënnegt ginn.

Toggle Staaten

Füügt fir den Zoustand data-bs-toggle="button"vun engem Knäppchen ze activewiesselen. Wann Dir e Knäpp pre-toggelt, musst Dir d' .activeKlass 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" autocomplete="off">Toggle button</button>
<button type="button" class="btn btn-primary active" data-bs-toggle="button" autocomplete="off" aria-pressed="true">Active toggle button</button>
<button type="button" class="btn btn-primary" disabled data-bs-toggle="button" autocomplete="off">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 href="#" class="btn btn-primary disabled" tabindex="-1" 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:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Method Beschreiwung
toggle Wiesselt Push Staat. Gëtt de Knäppchen d'Erscheinung datt et aktivéiert gouf.
dispose Zerstéiert en Element Knäppchen. (läscht gespäichert Daten am DOM Element)
getInstance Statesch Method déi Iech erlaabt d'Knäppchen Instanz mat engem DOM Element verbonnen ze kréien, Dir kënnt et esou benotzen:bootstrap.Button.getInstance(element)
getOrCreateInstance Statesch Method déi eng Knäpperinstanz zréckginn, déi un engem DOM Element assoziéiert ass oder en neit erstellt am Fall wou se net initialiséiert gouf. Dir kënnt et esou benotzen:bootstrap.Button.getOrCreateInstance(element)

Zum Beispill, fir all Knäppercher ze wiesselen

var buttons = document.querySelectorAll('.btn')
buttons.forEach(function (button) {
  var button = new bootstrap.Button(button)
  button.toggle()
})

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:              $link-color;
$btn-link-hover-color:        $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%;

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)
) {
  color: $color;
  @include gradient-bg($background);
  border-color: $border;
  @include box-shadow($btn-box-shadow);

  &:hover {
    color: $hover-color;
    @include gradient-bg($hover-background);
    border-color: $hover-border;
  }

  .btn-check:focus + &,
  &:focus {
    color: $hover-color;
    @include gradient-bg($hover-background);
    border-color: $hover-border;
    @if $enable-shadows {
      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));
    } @else {
      // Avoid using mixin so we can pass custom focus shadow properly
      box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);
    }
  }

  .btn-check:checked + &,
  .btn-check:active + &,
  &:active,
  &.active,
  .show > &.dropdown-toggle {
    color: $active-color;
    background-color: $active-background;
    // Remove CSS gradients if they're enabled
    background-image: if($enable-gradients, none, null);
    border-color: $active-border;

    &:focus {
      @if $enable-shadows {
        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));
      } @else {
        // Avoid using mixin so we can pass custom focus shadow properly
        box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);
      }
    }
  }

  &:disabled,
  &.disabled {
    color: $disabled-color;
    background-color: $disabled-background;
    // Remove CSS gradients if they're enabled
    background-image: if($enable-gradients, none, null);
    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)
) {
  color: $color;
  border-color: $color;

  &:hover {
    color: $color-hover;
    background-color: $active-background;
    border-color: $active-border;
  }

  .btn-check:focus + &,
  &:focus {
    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
  }

  .btn-check:checked + &,
  .btn-check:active + &,
  &:active,
  &.active,
  &.dropdown-toggle.show {
    color: $active-color;
    background-color: $active-background;
    border-color: $active-border;

    &:focus {
      @if $enable-shadows {
        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
      } @else {
        // Avoid using mixin so we can pass custom focus shadow properly
        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
      }
    }
  }

  &:disabled,
  &.disabled {
    color: $color;
    background-color: transparent;
  }
}
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
  padding: $padding-y $padding-x;
  @include font-size($font-size);
  // Manually declare to provide an override to the browser default
  @include border-radius($border-radius, 0);
}

Loops

Knäppevarianten (fir regelméisseg a Konturknäpper) benotzen hir jeeweileg Mixins mat eiser $theme-colorsKaart fir d'Modifier Klassen an ze generéieren scss/_buttons.scss.

@each $color, $value in $theme-colors {
  .btn-#{$color} {
    @include button-variant($value, $value);
  }
}

@each $color, $value in $theme-colors {
  .btn-outline-#{$color} {
    @include button-outline-variant($value);
  }
}