Saltu al ĉefa enhavo Saltu al navigado de dokumentoj
in English

Butonoj

Uzu la kutimajn butonstilojn de Bootstrap por agoj en formoj, dialogoj kaj pli kun subteno por pluraj grandecoj, ŝtatoj kaj pli.

Ekzemploj

Bootstrap inkluzivas plurajn antaŭdifinitajn butonstilojn, ĉiu servante sian propran semantikan celon, kun kelkaj kromaĵoj enmetitaj por pli da kontrolo.

<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>
Transdonante signifon al helpaj teknologioj

Uzi koloron por aldoni signifon nur provizas vidan indikon, kiu ne estos transdonita al uzantoj de helpaj teknologioj - kiel ekranlegiloj. Certigu, ke informoj indikitaj per la koloro estas aŭ evidenta de la enhavo mem (ekz. la videbla teksto), aŭ estas inkluzivita per alternativaj rimedoj, kiel aldona teksto kaŝita kun la .visually-hiddenklaso.

Malebligu tekstan envolvadon

Se vi ne volas, ke la butonteksto envolviĝu, vi povas aldoni la .text-nowrapklason al la butono. En Sass, vi povas agordi $btn-white-space: nowrapmalŝalti tekston envolvadon por ĉiu butono.

Butonetikedoj

La .btnklasoj estas dezajnitaj por esti uzataj kun la <button>elemento. Tamen, vi ankaŭ povas uzi ĉi tiujn klasojn sur <a><input>elementoj (kvankam iuj retumiloj povas apliki iomete malsaman bildigon).

Kiam oni uzas butonklasojn pri <a>elementoj, kiuj estas uzataj por ekigi en-paĝan funkcion (kiel kolapsa enhavo), anstataŭ ligi al novaj paĝoj aŭ sekcioj ene de la nuna paĝo, ĉi tiuj ligiloj devus ricevi role="button"por taŭge transdoni sian celon al helpaj teknologioj kiel ekzemple. ekranlegiloj.

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

Skizo butonoj

Ĉu vi bezonas butonon, sed ne la fortajn fonkolorojn, kiujn ili alportas? Anstataŭigu la defaŭltajn modifklasojn per .btn-outline-*tiuj por forigi ĉiujn fonbildojn kaj kolorojn sur iu ajn butono.

<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>
Kelkaj el la butonstiloj uzas relative helan malfonkoloron, kaj devus esti uzataj nur sur malhela fono por havi sufiĉan kontraston.

Grandecoj

Ĉu vi volas pli grandajn aŭ pli malgrandajn butonojn? Aldonu .btn-lg.btn-smpor pliaj grandecoj.

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

Malfunkciigita ŝtato

Faru butonojn aspekti neaktivaj aldonante la disabledbulean atributon al iu ajn <button>elemento. Malŝaltitaj butonoj pointer-events: noneaplikiĝis al, malhelpante ŝvebadon kaj aktivajn statojn ekfunkciigi.

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

Malŝaltitaj butonoj uzantaj la <a>elementon kondutas iom malsame:

  • <a>s ne subtenas la disabledatributon, do vi devas aldoni la .disabledklason por ke ĝi videble aspektu malŝaltita.
  • Iuj estontecaj stiloj estas inkluzivitaj por malŝalti ĉiujn pointer-eventsankrajn butonojn.
  • Malfunkciigitaj butonoj uzado <a>devus inkluzivi la aria-disabled="true"atributon por indiki la staton de la elemento al helpaj teknologioj.
  • Malŝaltitaj butonoj uzantaj <a> ne devus inkluzivi la hrefatributon.
<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>

Por kovri kazojn, kie vi devas konservi la hrefatributon sur malfunkciigita ligilo, la .disabledklaso uzas pointer-events: nonepor provi malŝalti la ligan funkcion de <a>s. Notu, ke ĉi tiu CSS-posedaĵo ankoraŭ ne estas normigita por HTML, sed ĉiuj modernaj retumiloj subtenas ĝin. Krome, eĉ en retumiloj kiuj subtenas pointer-events: none, klavarnavigado restas netuŝita, kio signifas, ke videblaj klavaruzantoj kaj uzantoj de helpaj teknologioj ankoraŭ povos aktivigi ĉi tiujn ligilojn. Do por esti sekura, krom aria-disabled="true", ankaŭ inkluzivu tabindex="-1"atributon sur ĉi tiuj ligiloj por malhelpi ilin ricevi klavaran fokuson, kaj uzu kutiman JavaScript por tute malŝalti ilian funkcion.

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

Blokaj butonoj

Kreu respondemajn stakojn de plenlarĝaj, "blokaj butonoj" kiel tiuj en Bootstrap 4 kun miksaĵo de niaj ekranaj kaj brecaj iloj. Uzante ilojn anstataŭ butonajn specifajn klasojn, ni havas multe pli grandan kontrolon pri interspacigo, vicigo kaj respondemaj kondutoj.

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

Ĉi tie ni kreas respondeman variadon, komencante per vertikale stakitaj butonoj ĝis la mdrompopunkto, kie .d-md-blockanstataŭigas la .d-gridklason, tiel nuligante la gap-2utilecon. Regrandigu vian retumilon por vidi ilin ŝanĝiĝi.

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

Vi povas ĝustigi la larĝon de viaj blokbutonoj kun kradaj kolumnaj larĝaj klasoj. Ekzemple, por duonlarĝa "bloka butono", uzu .col-6. Centri ĝin horizontale .mx-autoankaŭ per .

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

Pliaj iloj povas esti uzataj por ĝustigi la vicigon de butonoj kiam horizontale. Ĉi tie ni prenis nian antaŭan respondeman ekzemplon kaj aldonis kelkajn flekseblajn ilojn kaj marĝenan ilon sur la butono por dekstre vicigi la butonojn kiam ili ne plu estas stakigitaj.

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

Butonaldonaĵo

La butonaldonaĵo permesas krei simplajn ŝalti/malŝalti butonojn.

Vide, ĉi tiuj baskulimaj butonoj estas identaj al la markobutonoj . Tamen, ili estas transdonitaj alimaniere de helpaj teknologioj: la markobutonoj ŝaltiloj estos anoncitaj de ekranlegantoj kiel "markitaj"/"ne kontrolitaj" (ĉar, malgraŭ sia aspekto, ili esence ankoraŭ estas markobutonoj), dum ĉi tiuj basulbutonoj estos anoncitaj kiel "butono"/"butono premita". La elekto inter ĉi tiuj du aliroj dependos de la speco de baskulo, kiun vi kreas, kaj ĉu aŭ ne la baskulo havos sencon por uzantoj kiam anoncite kiel markobutono aŭ kiel fakta butono.

Ŝaltigu ŝtatojn

Aldoni data-bs-toggle="button"por ŝanĝi la staton de butono active. Se vi antaŭŝanĝas butonon, vi devas permane aldoni la .activeklason kaj aria-pressed="true" certigi, ke ĝi estas taŭge transdonita al helpaj teknologioj.

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

Metodoj

Vi povas krei butonon per la butonkonstruilo, ekzemple:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Metodo Priskribo
toggle Ŝaltigas puŝan staton. Donas al la butono la aspekton, ke ĝi estas aktivigita.
dispose Detruas la butonon de elemento. (Forigas konservitajn datumojn sur la DOM-elemento)
getInstance Senmova metodo, kiu ebligas al vi akiri la butonan ekzemplon asociitan al DOM-elemento, vi povas uzi ĝin tiel:bootstrap.Button.getInstance(element)
getOrCreateInstance Senmova metodo, kiu resendas butonan ekzemplon asociitan al DOM-elemento aŭ kreas novan se ĝi ne estis pravigita. Vi povas uzi ĝin tiel:bootstrap.Button.getOrCreateInstance(element)

Ekzemple, por ŝanĝi ĉiujn butonojn

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

Sass

Variabloj

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

Miksinoj

Estas tri miksaĵoj por butonoj: variaĵo de butonoj kaj butonstreko (ambaŭ bazitaj sur $theme-colors), plus butongranda miksaĵo.

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

Bukloj

Butonvariaĵoj (por regulaj kaj skizaj butonoj) uzas siajn respektivajn miksaĵojn kun nia $theme-colorsmapo por generi la modifklasojn en 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);
  }
}