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-hidden
klaso.
Malebligu tekstan envolvadon
Se vi ne volas, ke la butonteksto envolviĝu, vi povas aldoni la .text-nowrap
klason al la butono. En Sass, vi povas agordi $btn-white-space: nowrap
malŝalti tekston envolvadon por ĉiu butono.
Butonetikedoj
La .btn
klasoj estas dezajnitaj por esti uzataj kun la <button>
elemento. Tamen, vi ankaŭ povas uzi ĉi tiujn klasojn sur <a>
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.
<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>
Grandecoj
Ĉu vi volas pli grandajn aŭ pli malgrandajn butonojn? Aldonu .btn-lg
aŭ .btn-sm
por 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 disabled
bulean atributon al iu ajn <button>
elemento. Malŝaltitaj butonoj pointer-events: none
aplikiĝ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 ladisabled
atributon, do vi devas aldoni la.disabled
klason por ke ĝi videble aspektu malŝaltita.- Iuj estontecaj stiloj estas inkluzivitaj por malŝalti ĉiujn
pointer-events
ankrajn butonojn. - Malfunkciigitaj butonoj uzado
<a>
devus inkluzivi laaria-disabled="true"
atributon por indiki la staton de la elemento al helpaj teknologioj. - Malŝaltitaj butonoj uzantaj
<a>
ne devus inkluzivi lahref
atributon.
<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>
Ligo-funkcieca averto
Por kovri kazojn, kie vi devas konservi la href
atributon sur malfunkciigita ligilo, la .disabled
klaso uzas pointer-events: none
por 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 md
rompopunkto, kie .d-md-block
anstataŭigas la .d-grid
klason, tiel nuligante la gap-2
utilecon. 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-auto
ankaŭ 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.
Ŝ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 .active
klason 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-colors
mapo 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);
}
}