Lumaktaw sa pangunahing nilalaman Lumaktaw sa docs navigation
in English

Mga Pindutan

Gamitin ang mga custom na istilo ng button ng Bootstrap para sa mga aksyon sa mga form, dialog, at higit pa na may suporta para sa maraming laki, estado, at higit pa.

Mga halimbawa

Kasama sa Bootstrap ang ilang paunang natukoy na mga istilo ng button, bawat isa ay nagsisilbi sa sarili nitong semantic na layunin, na may ilang mga dagdag na itinapon para sa higit na kontrol.

<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>
Naghahatid ng kahulugan sa mga pantulong na teknolohiya

Ang paggamit ng kulay upang magdagdag ng kahulugan ay nagbibigay lamang ng visual na indikasyon, na hindi ibibigay sa mga gumagamit ng mga pantulong na teknolohiya - tulad ng mga screen reader. Siguraduhin na ang impormasyong tinutukoy ng kulay ay maaaring halata mula sa nilalaman mismo (hal. ang nakikitang teksto), o kasama sa pamamagitan ng mga alternatibong paraan, tulad ng karagdagang tekstong nakatago sa .visually-hiddenklase.

I-disable ang text wrapping

Kung ayaw mong i-wrap ang text ng button, maaari mong idagdag ang .text-nowrapklase sa button. Sa Sass, maaari mong itakda $btn-white-space: nowrapna huwag paganahin ang text wrapping para sa bawat button.

Mga tag ng pindutan

Ang .btnmga klase ay idinisenyo upang magamit kasama ang <button>elemento. Gayunpaman, maaari mo ring gamitin ang mga klase na ito sa <a>o mga <input>elemento (bagama't ang ilang mga browser ay maaaring maglapat ng bahagyang naiibang pag-render).

Kapag gumagamit ng mga klase ng button sa <a>mga elemento na ginagamit upang mag-trigger ng in-page na functionality (tulad ng pag-collapse ng content), sa halip na mag-link sa mga bagong page o seksyon sa loob ng kasalukuyang page, ang mga link na ito ay dapat bigyan ng isang role="button"upang naaangkop na maihatid ang kanilang layunin sa mga pantulong na teknolohiya tulad ng mga screen reader.

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

Mga pindutan ng outline

Nangangailangan ng isang pindutan, ngunit hindi ang mabigat na kulay ng background na dinadala nila? Palitan ang mga default na klase ng modifier ng .btn-outline-*mga mag-aalis ng lahat ng larawan sa background at mga kulay sa anumang button.

<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>
Gumagamit ang ilan sa mga istilo ng button ng medyo maliwanag na kulay ng foreground, at dapat lang gamitin sa madilim na background upang magkaroon ng sapat na contrast.

Mga sukat

Gusto mo ba ng mas malaki o mas maliit na mga pindutan? Magdagdag .btn-lgo .btn-smpara sa mga karagdagang laki.

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

Estadong may kapansanan

Gawing hindi aktibo ang mga button sa pamamagitan ng pagdaragdag ng disabledboolean attribute sa anumang <button>elemento. Ang mga naka-disable na button ay pointer-events: noneinilapat sa, na pumipigil sa pag-hover at mga aktibong estado mula sa pag-trigger.

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

<a>Medyo naiiba ang pagkilos ng mga naka- disable na button gamit ang elemento:

  • <a>s ay hindi sumusuporta sa disabledkatangian, kaya dapat mong idagdag ang .disabledklase upang makita itong hindi pinagana.
  • Ang ilang mga istilong panghinaharap ay kasama upang hindi paganahin ang lahat pointer-eventssa mga pindutan ng anchor.
  • Dapat isama ng mga naka-disable na button ang aria-disabled="true"attribute upang ipahiwatig ang estado ng elemento sa mga teknolohiyang pantulong.
<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>

.disabledGinagamit ng klase pointer-events: noneupang subukang huwag paganahin ang pag-andar ng link ng s <a>, ngunit ang pag-aari ng CSS ay hindi pa na-standardize. Bilang karagdagan, kahit na sa mga browser na sumusuporta pointer-events: none, ang keyboard navigation ay nananatiling hindi naaapektuhan, ibig sabihin, ang mga nakikitang user ng keyboard at mga user ng mga pantulong na teknolohiya ay maa-activate pa rin ang mga link na ito. Kaya para maging ligtas, bilang karagdagan sa aria-disabled="true", magsama rin ng tabindex="-1"attribute sa mga link na ito upang pigilan silang makatanggap ng focus sa keyboard, at gumamit ng custom na JavaScript upang ganap na i-disable ang kanilang functionality.

I-block ang mga button

Gumawa ng mga tumutugong stack ng buong lapad, "mga block button" tulad ng mga nasa Bootstrap 4 na may kumbinasyon ng aming mga utility sa display at gap. Sa pamamagitan ng paggamit ng mga utility sa halip na mga partikular na klase ng button, mas malaki ang kontrol namin sa spacing, alignment, at tumutugon na gawi.

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

Dito, lumikha kami ng isang tumutugon na pagkakaiba-iba, na nagsisimula sa mga patayong nakasalansan na mga pindutan hanggang sa mdbreakpoint, kung saan .d-md-blockpinapalitan ang .d-gridklase, kaya pinawalang-bisa ang gap-2utility. Baguhin ang laki ng iyong browser upang makitang nagbabago ang mga ito.

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

Maaari mong ayusin ang lapad ng iyong mga block button na may mga klase sa lapad ng column ng grid. Halimbawa, para sa kalahating lapad na "block button", gamitin ang .col-6. Igitna ito nang pahalang gamit ang .mx-auto, masyadong.

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

Maaaring gamitin ang mga karagdagang kagamitan upang ayusin ang pagkakahanay ng mga pindutan kapag pahalang. Dito kinuha namin ang aming nakaraang tumutugon na halimbawa at nagdagdag ng ilang flex utilities at margin utility sa button para i-align sa kanan ang mga button kapag hindi na naka-stack ang mga ito.

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

Binibigyang-daan ka ng plugin ng button na lumikha ng mga simpleng on/off toggle button.

Biswal, ang mga toggle button na ito ay magkapareho sa checkbox toggle buttons . Gayunpaman, naiiba ang mga ito sa pamamagitan ng mga pantulong na teknolohiya: ang mga checkbox toggle ay iaanunsyo ng mga screen reader bilang "naka-check" / "hindi naka-check" (dahil, sa kabila ng kanilang hitsura, sila ay mga checkbox pa rin sa panimula), samantalang ang mga toggle button na ito ay iaanunsyo bilang “button”/“pindot na pinindot”. Ang pagpili sa pagitan ng dalawang approach na ito ay depende sa uri ng toggle na iyong ginagawa, at kung ang toggle ay magiging makabuluhan o hindi sa mga user kapag inihayag bilang isang checkbox o bilang isang aktwal na button.

I-toggle ang mga estado

Idagdag data-bs-toggle="button"upang i-toggle ang activekatayuan ng isang button. Kung pre-toggling mo ang isang button, dapat mong manu-manong idagdag ang .activeklase at aria-pressed="true" upang matiyak na naaangkop ito sa mga pantulong na teknolohiya.

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

Paraan

Maaari kang lumikha ng isang halimbawa ng pindutan gamit ang tagabuo ng pindutan, halimbawa:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Pamamaraan Paglalarawan
toggle I-toggle ang estado ng push. Binibigyan ang pindutan ng hitsura na ito ay na-activate.
dispose Sinisira ang button ng isang elemento. (Aalisin ang nakaimbak na data sa elemento ng DOM)
getInstance Static na paraan na nagbibigay-daan sa iyong makuha ang instance ng button na nauugnay sa isang elemento ng DOM, maaari mo itong gamitin tulad nito:bootstrap.Button.getInstance(element)
getOrCreateInstance Static na paraan na nagbabalik ng button na instance na nauugnay sa isang elemento ng DOM o gumagawa ng bago kung sakaling hindi ito nasimulan. Maaari mo itong gamitin tulad nito:bootstrap.Button.getOrCreateInstance(element)

Halimbawa, upang i-toggle ang lahat ng mga pindutan

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

Sass

Mga variable

$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

May tatlong mixin para sa mga button: button at button outline na variant mixin (parehong batay sa $theme-colors), kasama ang isang button na mixin na laki.

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

Mga loop

Ang mga variant ng button (para sa mga regular at outline na button) ay gumagamit ng kani-kanilang mga mixin sa aming $theme-colorsmapa upang bumuo ng mga klase ng modifier sa 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);
  }
}