Saltatu eduki nagusira Saltatu dokumentuen nabigaziora
in English

Botoiak

Erabili Bootstrap-en botoi-estilo pertsonalizatuak inprimakietan, elkarrizketa-koadroetan eta beste hainbat ekintzetarako, tamaina, egoera eta beste hainbat laguntzarekin.

Adibideak

Bootstrap-ek aurrez zehaztutako hainbat botoi-estilo biltzen ditu, bakoitzak bere helburu semantikoa betetzen du, gehigarri batzuk kontrol gehiago izateko.

<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>
Laguntza-teknologiei esanahia ematea

Kolorea esanahi gehitzeko kolorea erabiltzeak adierazgarri bisual bat baino ez du ematen, eta hori ez zaie helaraziko laguntza-teknologien erabiltzaileei, adibidez, pantaila-irakurgailuei. Ziurtatu kolorez adierazten den informazioa edukitik bertatik agerikoa dela (adibidez, ikusgai dagoen testua) edo beste bitarteko batzuen bidez sartzen dela, adibidez .visually-hiddenklasearekin ezkutatuta dagoen testu gehigarria.

Desgaitu testua biltzea

Botoiaren testua biltzea nahi ez baduzu, .text-nowrapklasea gehi diezaiokezu botoiari. $btn-white-space: nowrapSass-en, botoi bakoitzeko testu-biltzea desgaitzeko ezar dezakezu .

Botoien etiketak

Klaseak elementuarekin .btnerabiltzeko diseinatuta daude <button>. <a>Hala ere, klase hauek edo elementuetan ere erabil ditzakezu <input>(nabigatzaile batzuek errendatze apur bat desberdina aplika dezaketen arren).

Orri barruko funtzionalitateak abiarazteko erabiltzen diren elementuetan botoi-klaseak erabiltzen dituzunean <a>(esaterako, edukia tolestea), uneko orrialdeko orrialde edo atal berrietara estekatu beharrean, esteka hauek bat eman behar zaie role="button"beren helburua laguntza-teknologietara egoki helarazteko, esate baterako. pantaila-irakurgailuak.

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

Eskema botoiak

Botoi bat behar al duzu, baina ez ekartzen dituzten atzeko planoko kolore handiak? Ordeztu modifikatzaile-klase lehenetsiak .btn-outline-*edozein botoitako atzeko planoko irudi eta kolore guztiak kentzeko dituztenekin.

<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>
Botoi-estilo batzuek lehen planoko kolore argi samarra erabiltzen dute, eta hondo ilun batean bakarrik erabili behar dira kontraste nahikoa izateko.

Tamainak

Botoi handiagoak edo txikiagoak nahi dituzu? Gehitu .btn-lgedo .btn-smtamaina gehigarrietarako.

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

Ezindu egoera

Egin botoiek inaktibo itxura emanez edozein elementuri disabledatributu boolearra gehituta. <button>Desgaitutako botoiak pointer-events: noneaplikatu dira, pasatzea eta egoera aktiboak abiarazteko saihestuz.

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

Elementua erabiltzen duten desgaitutako botoiek <a>zertxobait desberdina dute:

  • <a>s ez dute disabledatributua onartzen, beraz, klasea gehitu behar duzu .disabledbisualki desgaituta ager dadin.
  • Etorkizuneko estilo batzuk sartzen dira pointer-eventsaingura-botoietan guztiak desgaitzeko.
  • Desgaitutako botoiek aria-disabled="true"laguntza-teknologiei elementuaren egoera adierazteko atributua izan behar dute.
<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>

Klaseak s-ren estekaren funtzionaltasuna desgaitzen saiatzeko .disablederabiltzen du , baina CSS propietate hori ez dago oraindik estandarizatuta. Gainera, onartzen duten arakatzaileetan ere , teklatuaren nabigazioa ez da eragiten, hau da, ikusmeneko teklatuaren erabiltzaileek eta laguntza-teknologien erabiltzaileek esteka hauek aktibatu ahal izango dituzte. Beraz, seguru egoteko, gehituz gain , esteka hauetan atributu bat ere sartu teklatuaren fokua jaso ez dadin, eta erabili JavaScript pertsonalizatua haien funtzionalitateak guztiz desgaitzeko.pointer-events: none<a>pointer-events: nonearia-disabled="true"tabindex="-1"

Blokeatu botoiak

Sortu zabalera osoko "blokeatu botoi" multzo sentikorrak Bootstrap 4-n bezalakoak, gure pantaila eta hutsuneen erabilgarritasunen nahasketa batekin. Botoi espezifikoen klaseen ordez utilitateak erabiliz, askoz ere kontrol handiagoa dugu tartearen, lerrokatzearen eta erantzuteko jokabideen gainean.

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

Hemen aldaera sentikor bat sortzen dugu, bertikalean pilatutako botoietatik hasita mdeten-puntura arte, non klasea .d-md-blockordezkatzen duen .d-grid, eta horrela erabilgarritasuna baliogabetzen du gap-2. Aldatu zure arakatzailea aldatzen ikusteko.

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

Zure bloke-botoien zabalera doi dezakezu sareko zutabeen zabalera klaseekin. Adibidez, zabalera erdiko "blokeatu botoia" baterako, erabili .col-6. Zentratu horizontalean .mx-autoere.

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

Utilitate gehigarriak erabil daitezke botoien lerrokatzea horizontalean doitzeko. Hemen gure aurreko sentikorren adibidea hartu dugu eta malgu-utilitate batzuk eta marjina-erabilgarritasun bat gehitu ditugu botoian botoiak eskuinera lerrokatzeko jada pilatuta ez daudenean.

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

Botoiaren plugina

Botoien pluginak pizteko/desaktibatzeko botoi errazak sortzeko aukera ematen du.

Ikusmenean, txandakatzeko botoi hauek kontrol- laukiaren txandakatzeko botoien berdinak dira . Hala ere, laguntza-teknologiek modu ezberdinean transmititzen dute: kontrol-laukien txandaketak pantaila-irakurleek "markatuta"/"markatuta ez" gisa iragarriko dituzte (izan ere, itxura izan arren, funtsean kontrol-laukiak dira), eta txandakatze-botoi hauek bezala iragarriko dira. “botoia”/“botoia sakatuta”. Bi ikuspegi hauen artean aukeratzea sortzen ari zaren etengailu motaren araberakoa izango da, eta etengailuak zentzua izango duen edo ez erabiltzaileentzat kontrol-lauki gisa edo benetako botoi gisa iragartzen denean.

Aldatu estatuak

Gehitu data-bs-toggle="button"botoi baten activeegoera aldatzeko. Botoi bat aldez aurretik txandakatzen ari bazara, eskuz gehitu behar duzu .activeklasea eta aria-pressed="true" laguntza-teknologietara egoki transmititzen dela ziurtatzeko.

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

Metodoak

Botoi-instantzia bat sor dezakezu botoiaren eraikitzailearekin, adibidez:

var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Metodoa Deskribapena
toggle Bultza-egoera aktibatzen du. Botoiari aktibatuta dagoen itxura ematen dio.
dispose Elementu baten botoia suntsitzen du. (DOM elementuan gordetako datuak kentzen ditu)
getInstance DOM elementu bati lotutako botoiaren instantzia lortzeko aukera ematen duen metodo estatikoa, honela erabil dezakezu:bootstrap.Button.getInstance(element)
getOrCreateInstance Metodo estatikoa DOM elementu bati lotutako botoi-instantzia itzultzen duena edo berri bat sortzen duena, hasieratu ez bazen. Honela erabil dezakezu:bootstrap.Button.getOrCreateInstance(element)

Adibidez, botoi guztiak aldatzeko

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

Sass

Aldagaiak

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

Mixinak

Botoientzako hiru nahasketa daude: botoiaren eta botoien eskema-aldaeraren mixin-ak (biak oinarritutakoak $theme-colors), gehi botoien tamainako mixin bat.

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

Begiztak

Botoien aldaerek (botoi arruntetarako eta eskemarako) dagozkien nahasketak erabiltzen dituzte gure $theme-colorsmaparekin modifikatzaile-klaseak sortzeko 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);
  }
}