Slaan oor na hoofinhoud Slaan oor na dokumentnavigasie
in English

Knoppies

Gebruik Bootstrap se pasgemaakte knoppiestyle vir aksies in vorms, dialoogvensters en meer met ondersteuning vir verskeie groottes, state en meer.

Voorbeelde

Bootstrap bevat verskeie voorafbepaalde knoppiestyle, wat elkeen sy eie semantiese doel dien, met 'n paar ekstras ingegooi vir meer beheer.

<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>
Dra betekenis aan ondersteunende tegnologieë oor

Die gebruik van kleur om betekenis toe te voeg, verskaf slegs 'n visuele aanduiding, wat nie aan gebruikers van ondersteunende tegnologieë – soos skermlesers – oorgedra sal word nie. Maak seker dat inligting wat deur die kleur aangedui word óf duidelik uit die inhoud self (bv. die sigbare teks), óf op alternatiewe wyse ingesluit word, soos bykomende teks wat by die .visually-hiddenklas versteek is.

Deaktiveer teksomvou

As jy nie wil hê dat die knoppieteks moet omvou nie, kan jy die .text-nowrapklas by die knoppie voeg. In Sass kan jy instel $btn-white-space: nowrapom teksomvou vir elke knoppie te deaktiveer.

Knoppie-etikette

Die .btnklasse is ontwerp om saam met die <button>element gebruik te word. U kan egter ook hierdie klasse op <a>of <input>elemente gebruik (hoewel sommige blaaiers 'n effens ander weergawe kan toepas).

Wanneer knoppieklasse gebruik word op <a>elemente wat gebruik word om in-bladsy-funksionaliteit te aktiveer (soos ineenstortende inhoud), eerder as om na nuwe bladsye of afdelings binne die huidige bladsy te skakel, moet hierdie skakels 'n gegee role="button"word om hul doel toepaslik oor te dra aan ondersteunende tegnologieë soos bv. skermlesers.

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

Omlyn knoppies

Het jy 'n knoppie nodig, maar nie die stewige agtergrondkleure wat hulle bring nie? Vervang die verstek wysiger klasse met .btn-outline-*dié om alle agtergrond beelde en kleure op enige knoppie te verwyder.

<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 van die knoppiestyle gebruik 'n relatief ligte voorgrondkleur en moet slegs op 'n donker agtergrond gebruik word om voldoende kontras te hê.

Groottes

Lus vir groter of kleiner knoppies? Voeg by .btn-lgof .btn-smvir addisionele groottes.

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

Gestremde toestand

Laat knoppies onaktief lyk deur die disabledBoolese kenmerk by enige <button>element te voeg. Gedeaktiveerde knoppies het pointer-events: nonetoegepas op, wat verhoed dat sweef en aktiewe toestande aktiveer.

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

Gedeaktiveerde knoppies wat die <a>element gebruik, tree 'n bietjie anders op:

  • <a>s ondersteun nie die disabledkenmerk nie, so jy moet die .disabledklas byvoeg om dit visueel gestremd te laat lyk.
  • Sommige toekomsvriendelike style is ingesluit om alles pointer-eventsop ankerknoppies te deaktiveer.
  • Gedeaktiveerde knoppies wat gebruik <a>word, moet die aria-disabled="true"kenmerk insluit om die toestand van die element aan ondersteunende tegnologieë aan te dui.
  • Gedeaktiveerde knoppies wat gebruik <a> word, moet nie die hrefkenmerk insluit nie.
<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 gevalle te dek waar jy die hrefkenmerk op 'n gedeaktiveerde skakel moet hou, .disabledgebruik die klas pointer-events: noneom die skakelfunksionaliteit van <a>s te probeer deaktiveer. Let daarop dat hierdie CSS-eienskap nog nie vir HTML gestandaardiseer is nie, maar alle moderne blaaiers ondersteun dit. Boonop, selfs in blaaiers wat wel ondersteun pointer-events: none, bly sleutelbordnavigasie onaangeraak, wat beteken dat siende sleutelbordgebruikers en gebruikers van ondersteunende tegnologie steeds hierdie skakels sal kan aktiveer. Om veilig te wees, sluit, benewens aria-disabled="true", ook 'n tabindex="-1"kenmerk op hierdie skakels in om te verhoed dat hulle sleutelbordfokus ontvang, en gebruik pasgemaakte JavaScript om hul funksionaliteit heeltemal uit te skakel.

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

Blok knoppies

Skep responsiewe stapels volwydte, "blokknoppies" soos dié in Bootstrap 4 met 'n mengsel van ons vertoon- en gapingshulpmiddels. Deur nutsprogramme in plaas van knoppie-spesifieke klasse te gebruik, het ons baie groter beheer oor spasiëring, belyning en responsiewe 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 skep ons 'n responsiewe variasie, wat begin met vertikaal gestapelde knoppies totdat die mdbreekpunt, waar .d-md-blockdie .d-gridklas vervang, en sodoende die gap-2nut tot niet maak. Verander die grootte van jou blaaier om te sien hoe hulle verander.

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

Jy kan die breedte van jou blokknoppies aanpas met roosterkolomwydteklasse. Byvoorbeeld, vir 'n halfwydte "blokknoppie", gebruik .col-6. Sentreer dit ook horisontaal 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>

Bykomende nutsprogramme kan gebruik word om die belyning van knoppies aan te pas wanneer dit horisontaal is. Hier het ons ons vorige responsiewe voorbeeld geneem en 'n paar buighulpmiddels en 'n marge-hulpmiddel op die knoppie bygevoeg om die knoppies regs in lyn te bring wanneer hulle nie meer gestapel is nie.

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

Knoppie-inprop

Die knoppie-inprop laat jou toe om eenvoudige aan/af-skakelknoppies te skep.

Visueel is hierdie wisselknoppies identies aan die boks-wisselknoppies . Hulle word egter anders oorgedra deur ondersteunende tegnologieë: die merkblokkiewissels sal deur skermlesers aangekondig word as "gemerk"/"nie gemerk" (aangesien hulle, ten spyte van hul voorkoms, fundamenteel steeds merkblokkies is), terwyl hierdie wisselknoppies aangekondig sal word as “knoppie”/“knoppie gedruk”. Die keuse tussen hierdie twee benaderings sal afhang van die tipe skakelaar wat u skep, en of die skakelaar vir gebruikers sin sal maak of nie wanneer dit as 'n merkblokkie of as 'n werklike knoppie aangekondig word.

Wissel state

Voeg by om 'n knoppie se toestand data-bs-toggle="button"te wissel . activeAs jy 'n knoppie vooraf wissel, moet jy die .activeklas met die hand byvoeg en aria-pressed="true" verseker dat dit gepas na ondersteunende tegnologieë oorgedra word.

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

Metodes

Jy kan 'n knoppie-instansie met die knoppie-konstruktor skep, byvoorbeeld:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Metode Beskrywing
toggle Wissel stootstatus. Gee die knoppie die voorkoms dat dit geaktiveer is.
dispose Vernietig 'n element se knoppie. (Verwyder gestoorde data op die DOM-element)
getInstance Statiese metode waarmee u die knoppie-instansie kan kry wat met 'n DOM-element geassosieer word, u kan dit so gebruik:bootstrap.Button.getInstance(element)
getOrCreateInstance Statiese metode wat 'n knoppie-instansie wat aan 'n DOM-element geassosieer word terugstuur of 'n nuwe een skep ingeval dit nie geïnisialiseer is nie. Jy kan dit so gebruik:bootstrap.Button.getOrCreateInstance(element)

Byvoorbeeld, om alle knoppies te wissel

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

Sass

Veranderlikes

$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%;

Mengsels

Daar is drie mengsels vir knoppies: knoppie- en knoppie-omtrekvariante-mengsels (beide gebaseer op $theme-colors), plus 'n knoppiegrootte-mengsel.

@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);
}

Lusse

Knoppie-variante (vir gereelde en buitelyn-knoppies) gebruik hul onderskeie mengsels met ons $theme-colorskaart om die wysigerklasse in te genereer 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);
  }
}