Lumpat menyang isi utama Lumpat menyang pandhu arah docs
in English

Tombol

Gunakake gaya tombol khusus Bootstrap kanggo tumindak ing formulir, dialog, lan liya-liyane kanthi dhukungan kanggo macem-macem ukuran, negara, lan liya-liyane.

Tuladha

Bootstrap kalebu sawetara gaya tombol sing wis ditemtokake, saben duwe tujuan semantik dhewe, kanthi sawetara tambahan sing dibuwang kanggo kontrol liyane.

<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>
Nuduhake makna kanggo teknologi assistive

Nggunakake warna kanggo nambah makna mung menehi indikasi visual, sing ora bakal dikirim menyang pangguna teknologi bantu - kayata pembaca layar. Priksa manawa informasi sing dituduhake kanthi warna katon jelas saka isi kasebut (umpamane teks sing katon), utawa kalebu liwat cara alternatif, kayata teks tambahan sing didhelikake karo .visually-hiddenkelas.

Pateni bungkus teks

Yen sampeyan ora pengin teks tombol kanggo mbungkus, sampeyan bisa nambah .text-nowrapkelas kanggo tombol. Ing Sass, sampeyan bisa nyetel $btn-white-space: nowrapkanggo mateni bungkus teks kanggo saben tombol.

Tag tombol

Kelas .btnkasebut dirancang kanggo digunakake karo <button>unsur kasebut. Nanging, sampeyan uga bisa nggunakake kelas iki ing <a>utawa <input>unsur (sanajan sawetara browser bisa nggunakake rendering rada beda).

Nalika nggunakake kelas tombol ing <a>unsur sing digunakake kanggo micu fungsi ing kaca (kaya ambruk isi), tinimbang ngubungake menyang kaca anyar utawa bagean ing kaca saiki, pranala iki kudu diwenehi role="button"kanggo tepat ngirim tujuane kanggo teknologi bantuan kayata maca layar.

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

Tombol outline

Mbutuhake tombol, nanging ora werna latar mburi dibalèkaké padha nggawa? Ganti kelas modifier standar karo .btn-outline-*sing kanggo mbusak kabeh gambar latar mburi lan werna ing tombol sembarang.

<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>
Sawetara gaya tombol nggunakake werna latar ngarep sing rada entheng, lan mung kudu digunakake ing latar mburi peteng supaya kontras cukup.

Ukuran

Apik tombol luwih gedhe utawa luwih cilik? Tambah .btn-lgutawa .btn-smkanggo ukuran tambahan.

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

negara dipatèni

Nggawe tombol katon ora aktif kanthi nambahake disabledatribut boolean menyang <button>unsur apa wae. Tombol dipatèni wis pointer-events: nonediterapake, nyegah hover lan status aktif saka micu.

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

Tombol sing dipateni nggunakake <a>unsur tumindak rada beda:

  • <a>s ora ndhukung disabledatribut, dadi sampeyan kudu nambah .disabledkelas kanggo nggawe visual katon dipatèni.
  • Sawetara gaya ramah mangsa kalebu kanggo mateni kabeh pointer-eventstombol anchor.
  • Tombol dipatèni nggunakake <a>kudu kalebu aria-disabled="true"atribut kanggo nunjukaké negara unsur kanggo teknologi assistive.
  • Tombol dipatèni nggunakake <a> ngirim ora kalebu hrefatribut.
<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>

Kanggo nutupi kasus ngendi sampeyan kudu nyimpen hrefatribut ing link dipatèni, .disabledkelas digunakake pointer-events: nonekanggo nyoba kanggo mateni fungsi link saka <a>s. Elinga yen properti CSS iki durung standar kanggo HTML, nanging kabeh browser modern ndhukung. Kajaba iku, sanajan ing browser sing ndhukung pointer-events: none, pandhu arah keyboard tetep ora kena pengaruh, tegese pangguna keyboard sing katon lan pangguna teknologi pitulung isih bisa ngaktifake tautan kasebut. Supaya aman, saliyane aria-disabled="true", uga kalebu tabindex="-1"atribut ing pranala kasebut kanggo nyegah wong-wong mau nampa fokus keyboard, lan nggunakake JavaScript khusus kanggo mateni fungsine kabeh.

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

Tombol blokir

Gawe tumpukan responsif kanthi "tombol blok" sing ambane kaya sing ana ing Bootstrap 4 kanthi campuran utilitas tampilan lan jurang. Kanthi nggunakake utilitas tinimbang kelas khusus tombol, kita duwe kontrol sing luwih gedhe babagan spasi, alignment, lan tindak tanduk responsif.

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

Kene kita nggawe variasi responsif, miwiti karo tombol vertikal dibandhingke nganti mdbreakpoint, ngendi .d-md-blockngganti .d-gridkelas, mangkono nullifying gap-2sarana. Owahi ukuran browser sampeyan kanggo ndeleng owah-owahan.

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

Sampeyan bisa nyetel ambane tombol pamblokiran karo kelas jembar kolom kothak. Contone, kanggo "tombol pamblokiran" setengah jembaré, gunakake .col-6. Pusat kasebut kanthi horisontal .mx-autouga.

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

Utilitas tambahan bisa digunakake kanggo nyetel alignment tombol nalika horisontal. Ing kene, kita wis njupuk conto responsif sadurunge lan nambah sawetara utilitas fleksibel lan utilitas margin ing tombol kanggo nyelarasake tombol nalika ora ditumpuk maneh.

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

Plugin tombol

Plugin tombol ngidini sampeyan nggawe tombol aktif / mateni sing gampang.

Secara visual, tombol toggle iki identik karo tombol toggle kothak centhang . Nanging, padha dikirim kanthi beda dening teknologi assistive: kothak centhang bakal diumumake dening pembaca layar minangka "dicenthang" / "ora dicenthang" (amarga, sanajan katon, dhasar kasebut isih kothak centhang), dene tombol pilihan kasebut bakal diumumake minangka "tombol" / "tombol ditekan". Pilihan ing antarane rong pendekatan iki bakal gumantung saka jinis pilihan sing sampeyan gawe, lan apa pilihan kasebut bakal migunani kanggo pangguna nalika diumumake minangka kothak centhang utawa minangka tombol nyata.

Ngalih negara

Tambah data-bs-toggle="button"kanggo ngalih status tombol active. Yen sampeyan wis ngalih tombol, sampeyan kudu nambah .activekelas kanthi manual lan aria-pressed="true" mesthekake yen wis dikirim kanthi tepat kanggo teknologi pitulung.

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

Metode

Sampeyan bisa nggawe conto tombol nganggo konstruktor tombol, contone:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Metode Katrangan
toggle Ngalih status push. Menehi tombol katon sing wis diaktifake.
dispose Ngancurake tombol unsur. (Mbusak data sing disimpen ing unsur DOM)
getInstance Cara statis sing ngidini sampeyan entuk conto tombol sing ana gandhengane karo unsur DOM, sampeyan bisa nggunakake kaya iki:bootstrap.Button.getInstance(element)
getOrCreateInstance Cara statis sing ngasilake conto tombol sing digandhengake karo unsur DOM utawa nggawe sing anyar yen ora diwiwiti. Sampeyan bisa nggunakake kaya iki:bootstrap.Button.getOrCreateInstance(element)

Contone, kanggo ngalih kabeh tombol

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

Sass

Variabel

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

Campuran

Ana telung mixin kanggo tombol: tombol lan tombol outline varian mixin (loro adhedhasar $theme-colors), plus ukuran tombol 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);
}

Loop

Varian tombol (kanggo tombol reguler lan outline) nggunakake mixin masing-masing karo $theme-colorspeta kita kanggo ngasilake kelas modifier ing 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);
  }
}