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.
<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>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>Zure neurri pertsonalizatua ere egin dezakezu CSS aldagaiekin:
<button type="button" class="btn btn-primary"
        style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;">
  Custom 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-primary" disabled>Primary button</button>
<button type="button" class="btn btn-secondary" disabled>Button</button>
<button type="button" class="btn btn-outline-primary" disabled>Primary button</button>
<button type="button" class="btn btn-outline-secondary" 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 laguntza-teknologiei elementuaren egoera adierazteko atributua izan behar dute <a>.aria-disabled="true"
- Erabiltzen diren desgaitutako botoiek <a>ez dutehrefatributua sartu behar.
<a class="btn btn-primary disabled" role="button" aria-disabled="true">Primary link</a>
<a class="btn btn-secondary disabled" role="button" aria-disabled="true">Link</a>Estekaren funtzionalitatearen oharra
hrefAtributua esteka desgaitu batean gorde behar duzun kasuak estaltzeko , .disabledklaseak s-ren pointer-events: noneesteka funtzionaltasuna desgaitzen saiatzeko erabiltzen du <a>. Kontuan izan CSS propietate hau oraindik ez dagoela HTMLrako estandarizatuta, baina arakatzaile moderno guztiek onartzen dute. Gainera, onartzen duten arakatzaileetan ere pointer-events: none, 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 aria-disabled="true", esteka hauetan atributu bat ere sartu tabindex="-1"teklatuaren fokua jaso ez dadin, eta erabili JavaScript pertsonalizatua haien funtzionalitateak guztiz desgaitzeko.
<a href="#" class="btn btn-primary disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
<a href="#" class="btn btn-secondary disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>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.
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">Toggle button</button>
<button type="button" class="btn btn-primary active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button>
<button type="button" class="btn btn-primary" disabled data-bs-toggle="button">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>Metodoak
Botoi-instantzia bat sor dezakezu botoiaren eraikitzailearekin, adibidez:
const bsButton = new bootstrap.Button('#myButton')
| Metodoa | Deskribapena | 
|---|---|
| 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 du hasieratu ez bazen. Honela erabil dezakezu: bootstrap.Button.getOrCreateInstance(element). | 
| toggle | Bultza-egoera aktibatzen du. Botoiari aktibatuta dagoen itxura ematen dio. | 
Adibidez, botoi guztiak aldatzeko
document.querySelectorAll('.btn').forEach(buttonElement => {
  const button = bootstrap.Button.getOrCreateInstance(buttonElement)
  button.toggle()
})
CSS
Aldagaiak
v5.2.0-n gehituaBootstrap-en CSS aldagaien bilakaeraren ikuspegiaren zati gisa, botoiek orain CSS aldagai lokalak erabiltzen dituzte aktibatuta .btndenbora errealean pertsonalizatzeko. CSS aldagaien balioak Sass bidez ezartzen dira, beraz, Sass pertsonalizazioa ere onartzen da oraindik ere.
  --#{$prefix}btn-padding-x: #{$btn-padding-x};
  --#{$prefix}btn-padding-y: #{$btn-padding-y};
  --#{$prefix}btn-font-family: #{$btn-font-family};
  @include rfs($btn-font-size, --#{$prefix}btn-font-size);
  --#{$prefix}btn-font-weight: #{$btn-font-weight};
  --#{$prefix}btn-line-height: #{$btn-line-height};
  --#{$prefix}btn-color: #{$body-color};
  --#{$prefix}btn-bg: transparent;
  --#{$prefix}btn-border-width: #{$btn-border-width};
  --#{$prefix}btn-border-color: transparent;
  --#{$prefix}btn-border-radius: #{$btn-border-radius};
  --#{$prefix}btn-hover-border-color: transparent;
  --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
  --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
  --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
  Mugatzaile-klase bakoitzak .btn-*CSS aldagai egokiak eguneratzen ditu CSS arau gehigarriak minimizatzeko gure button-variant(), button-outline-variant(), eta button-size()mixinekin.
Hona hemen modifikatzaile klase pertsonalizatu bat eraikitzeko adibide bat .btn-*gure dokumentuetarako esklusiboak diren botoietarako egiten dugun bezala Bootstrap-en CSS aldagaiak gure CSS eta Sass aldagaien nahasketa batekin berriro esleituz.
.btn-bd-primary {
  --bs-btn-font-weight: 600;
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bd-violet);
  --bs-btn-border-color: var(--bd-violet);
  --bs-btn-border-radius: .5rem;
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
  --bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
  --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
  --bs-btn-active-color: var(--bs-btn-hover-color);
  --bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
  --bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
}
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:              var(--#{$prefix}link-color);
$btn-link-hover-color:        var(--#{$prefix}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%;
Sass mixins
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)
) {
  --#{$prefix}btn-color: #{$color};
  --#{$prefix}btn-bg: #{$background};
  --#{$prefix}btn-border-color: #{$border};
  --#{$prefix}btn-hover-color: #{$hover-color};
  --#{$prefix}btn-hover-bg: #{$hover-background};
  --#{$prefix}btn-hover-border-color: #{$hover-border};
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
  --#{$prefix}btn-active-color: #{$active-color};
  --#{$prefix}btn-active-bg: #{$active-background};
  --#{$prefix}btn-active-border-color: #{$active-border};
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
  --#{$prefix}btn-disabled-color: #{$disabled-color};
  --#{$prefix}btn-disabled-bg: #{$disabled-background};
  --#{$prefix}btn-disabled-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)
) {
  --#{$prefix}btn-color: #{$color};
  --#{$prefix}btn-border-color: #{$color};
  --#{$prefix}btn-hover-color: #{$color-hover};
  --#{$prefix}btn-hover-bg: #{$active-background};
  --#{$prefix}btn-hover-border-color: #{$active-border};
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
  --#{$prefix}btn-active-color: #{$active-color};
  --#{$prefix}btn-active-bg: #{$active-background};
  --#{$prefix}btn-active-border-color: #{$active-border};
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
  --#{$prefix}btn-disabled-color: #{$color};
  --#{$prefix}btn-disabled-bg: transparent;
  --#{$prefix}btn-disabled-border-color: #{$color};
  --#{$prefix}gradient: none;
}
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
  --#{$prefix}btn-padding-y: #{$padding-y};
  --#{$prefix}btn-padding-x: #{$padding-x};
  @include rfs($font-size, --#{$prefix}btn-font-size);
  --#{$prefix}btn-border-radius: #{$border-radius};
}
Sass loops
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} {
    @if $color == "light" {
      @include button-variant(
        $value,
        $value,
        $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
        $hover-border: shade-color($value, $btn-hover-border-shade-amount),
        $active-background: shade-color($value, $btn-active-bg-shade-amount),
        $active-border: shade-color($value, $btn-active-border-shade-amount)
      );
    } @else if $color == "dark" {
      @include button-variant(
        $value,
        $value,
        $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
        $hover-border: tint-color($value, $btn-hover-border-tint-amount),
        $active-background: tint-color($value, $btn-active-bg-tint-amount),
        $active-border: tint-color($value, $btn-active-border-tint-amount)
      );
    } @else {
      @include button-variant($value, $value);
    }
  }
}
@each $color, $value in $theme-colors {
  .btn-outline-#{$color} {
    @include button-outline-variant($value);
  }
}