Ga naar hoofdinhoud Ga naar navigatie in documenten
in English

Toetsen

Gebruik de aangepaste knopstijlen van Bootstrap voor acties in formulieren, dialoogvensters en meer met ondersteuning voor meerdere formaten, statussen en meer.

Voorbeelden

Bootstrap bevat verschillende vooraf gedefinieerde knopstijlen, die elk hun eigen semantische doel dienen, met een paar extra's voor meer controle.

<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>
Betekenis overbrengen aan ondersteunende technologieën

Het gebruik van kleur om betekenis toe te voegen geeft alleen een visuele indicatie, die niet wordt overgebracht aan gebruikers van ondersteunende technologieën, zoals schermlezers. Zorg ervoor dat informatie die wordt aangegeven met de kleur ofwel duidelijk is uit de inhoud zelf (bijv. de zichtbare tekst), of op alternatieve manieren wordt opgenomen, zoals extra tekst die verborgen is bij de .visually-hiddenklasse.

Tekstterugloop uitschakelen

Als u niet wilt dat de knoptekst terugloopt, kunt u de .text-nowrapklas aan de knop toevoegen. In Sass kunt u instellen $btn-white-space: nowrapdat tekstterugloop voor elke knop wordt uitgeschakeld.

Knoptags

De .btnklassen zijn ontworpen om te worden gebruikt met het <button>element. U kunt deze klassen echter ook gebruiken op <a>of <input>elementen (hoewel sommige browsers een iets andere weergave kunnen toepassen).

Wanneer u knopklassen gebruikt op <a>elementen die worden gebruikt om functionaliteit op de pagina te activeren (zoals samenvouwende inhoud), in plaats van te linken naar nieuwe pagina's of secties binnen de huidige pagina, moeten deze links een a krijgen role="button"om hun doel op de juiste manier over te brengen aan ondersteunende technologieën zoals schermlezers.

Koppeling
<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">

Overzichtsknoppen

Een knop nodig, maar niet de forse achtergrondkleuren die ze brengen? Vervang de standaard modificatieklassen door .btn-outline-*die waarmee alle achtergrondafbeeldingen en kleuren op een knop worden verwijderd.

<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>
Sommige knopstijlen gebruiken een relatief lichte voorgrondkleur en mogen alleen op een donkere achtergrond worden gebruikt om voldoende contrast te hebben.

Maten

Zin in grotere of kleinere knopen? Voeg toe .btn-lgof .btn-smvoor extra maten.

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

Uitgeschakelde staat

Laat knoppen er inactief uitzien door het disabledbooleaanse attribuut aan elk <button>element toe te voegen. Uitgeschakelde knoppen zijn pointer-events: nonetoegepast op, waardoor de zweeftoestand en actieve status niet worden geactiveerd.

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

Uitgeschakelde knoppen die het <a>element gebruiken, gedragen zich iets anders:

  • <a>s ondersteunen het disabledattribuut niet, dus u moet de .disabledklasse toevoegen om het visueel uitgeschakeld te laten lijken.
  • Sommige toekomstvriendelijke stijlen zijn opgenomen om alle pointer-eventsankerknoppen uit te schakelen.
  • Uitgeschakelde knoppen die worden gebruikt <a>, moeten het aria-disabled="true"kenmerk bevatten om de status van het element voor ondersteunende technologieën aan te geven.
  • Uitgeschakelde knoppen die worden gebruikt, mogen het kenmerk <a> niet bevatten.href
<a class="btn btn-primary btn-lg disabled" role="button" aria-disabled="true">Primary link</a>
<a class="btn btn-secondary btn-lg disabled" role="button" aria-disabled="true">Link</a>

Om gevallen te dekken waarin u het hrefattribuut op een uitgeschakelde link moet houden, probeert de .disabledklasse pointer-events: nonede linkfunctionaliteit van <a>s uit te schakelen. Merk op dat deze CSS-eigenschap nog niet gestandaardiseerd is voor HTML, maar dat alle moderne browsers dit ondersteunen. Bovendien pointer-events: noneblijft toetsenbordnavigatie, zelfs in browsers die ondersteuning bieden, onaangetast, wat betekent dat ziende toetsenbordgebruikers en gebruikers van ondersteunende technologieën deze koppelingen nog steeds kunnen activeren. Dus om veilig te zijn, voeg naast aria-disabled="true", ook een tabindex="-1"attribuut toe aan deze links om te voorkomen dat ze toetsenbordfocus krijgen, en gebruik aangepast JavaScript om hun functionaliteit helemaal uit te schakelen.

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

Blokkeer knoppen

Maak responsieve stapels "blokknoppen" over de volledige breedte, zoals die in Bootstrap 4, met een mix van onze display- en gap-hulpprogramma's. Door hulpprogramma's te gebruiken in plaats van knopspecifieke klassen, hebben we veel meer controle over spatiëring, uitlijning en responsief gedrag.

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

Hier creëren we een responsieve variant, beginnend met verticaal gestapelde knoppen tot het mdbreekpunt, waar .d-md-blockde klasse wordt vervangen , waardoor het hulpprogramma .d-gridteniet wordt gedaan . gap-2Pas het formaat van uw browser aan om ze te zien veranderen.

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

U kunt de breedte van uw blokknoppen aanpassen met rasterkolombreedteklassen. Gebruik bijvoorbeeld voor een "blokkeringsknop" van halve breedte .col-6. Centreer het ook horizontaal met .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>

Extra hulpprogramma's kunnen worden gebruikt om de uitlijning van knoppen in horizontale positie aan te passen. Hier hebben we ons vorige responsieve voorbeeld genomen en enkele flexhulpprogramma's en een margehulpprogramma op de knop toegevoegd om de knoppen rechts uit te lijnen wanneer ze niet langer gestapeld zijn.

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

Knop plug-in

Met de knopplug-in kunt u eenvoudige aan/uit-schakelknoppen maken.

Visueel zijn deze schakelknoppen identiek aan de schakelknoppen voor selectievakjes . Ze worden echter anders overgebracht door hulptechnologieën: de schakelaars voor selectievakjes worden door schermlezers aangekondigd als "aangevinkt" / "niet aangevinkt" (aangezien ze, ondanks hun uiterlijk, in wezen nog steeds selectievakjes zijn), terwijl deze schakelknoppen worden aangekondigd als "knop"/"knop ingedrukt". De keuze tussen deze twee benaderingen hangt af van het type schakelaar dat u aan het maken bent, en of de schakelaar zinvol is voor gebruikers wanneer deze wordt aangekondigd als een selectievakje of als een echte knop.

Staten wisselen

Toevoegen data-bs-toggle="button"om de status van een knop te activewijzigen. Als u vooraf een knop omschakelt, moet u de .activeklasse handmatig toevoegen en aria-pressed="true" ervoor zorgen dat deze op de juiste manier wordt overgebracht naar ondersteunende technologieën.

<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 class="btn btn-primary disabled" aria-disabled="true" role="button" data-bs-toggle="button">Disabled toggle link</a>

Methoden:

U kunt een knopinstantie maken met de knopconstructor, bijvoorbeeld:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Methode Beschrijving
toggle Schakelt de push-status in. Geeft de knop de indruk dat deze is geactiveerd.
dispose Vernietigt de knop van een element. (Verwijdert opgeslagen gegevens op het DOM-element)
getInstance Statische methode waarmee u de knopinstantie kunt koppelen aan een DOM-element, u kunt deze als volgt gebruiken:bootstrap.Button.getInstance(element)
getOrCreateInstance Statische methode die een knopinstantie retourneert die is gekoppeld aan een DOM-element of een nieuwe maakt voor het geval deze niet is geïnitialiseerd. Je kunt het als volgt gebruiken:bootstrap.Button.getOrCreateInstance(element)

Om bijvoorbeeld alle knoppen te wisselen

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

Sass

Variabelen

$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

Er zijn drie mixins voor buttons: button en button outline variant mixins (beide gebaseerd op $theme-colors), plus een button size 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);
}

lussen

Knopvarianten (voor gewone en overzichtsknoppen) gebruiken hun respectievelijke mixins met onze $theme-colorskaart om de modificatieklassen in 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);
  }
}