Bouton
Sèvi ak estil bouton koutim Bootstrap pou aksyon nan fòm, dyalòg, ak plis ankò ak sipò pou plizyè gwosè, eta, ak plis ankò.
Egzanp yo
Bootstrap gen ladan plizyè estil bouton predefini, chak sèvi pwòp objektif semantik li yo, ak kèk siplemantè jete nan pou plis kontwòl.
<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>
Transmèt siyifikasyon nan teknoloji asistans
Sèvi ak koulè pou ajoute siyifikasyon sèlman bay yon endikasyon vizyèl, ki pa pral transmèt bay itilizatè teknoloji asistans - tankou lektè ekran. Asire w ke enfòmasyon ki endike nan koulè a se swa evidan nan kontni an li menm (egzanp tèks vizib la), oswa yo enkli nan mwayen altènatif, tankou tèks adisyonèl kache ak .visually-hidden
klas la.
Enfim anbalaj tèks
Si ou pa vle tèks bouton an vlope, ou ka ajoute .text-nowrap
klas la nan bouton an. Nan Sass, ou ka mete $btn-white-space: nowrap
enfim anbalaj tèks pou chak bouton.
Tag bouton
Klas .btn
yo fèt pou itilize ak <button>
eleman an. Sepandan, ou ka itilize tou klas sa yo sou <a>
oswa <input>
eleman (menm si kèk navigatè ka aplike yon rann yon ti kras diferan).
Lè w ap itilize klas bouton sou <a>
eleman ki itilize pou deklanche fonksyonalite nan paj la (tankou kontni efondre), olye ke lyen ak nouvo paj oswa seksyon nan paj aktyèl la, yo ta dwe bay lyen sa yo yon role="button"
fason apwopriye transmèt objektif yo nan teknoloji asistans tankou lektè ekran yo.
<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">
Bouton deskripsyon yo
Nan bezwen yon bouton, men se pa koulè background for yo pote? Ranplase klas modifye default yo ak sa .btn-outline-*
yo pou retire tout imaj background ak koulè sou nenpòt bouton.
<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>
Gwosè
Anpenpan bouton ki pi gwo oswa pi piti? Ajoute .btn-lg
oswa .btn-sm
pou gwosè adisyonèl.
<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>
Eta andikape
Fè bouton parèt inaktif lè w ajoute disabled
atribi boolean an nan nenpòt <button>
eleman. Bouton andikape yo te pointer-events: none
aplike nan, anpeche hover ak eta aktif soti nan deklanche.
<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>
Bouton andikape lè l sèvi avèk <a>
eleman an konpòte yon ti jan diferan:
<a>
s pa sipòtedisabled
atribi a, kidonk ou dwe ajoute.disabled
klas la pou fè li vizyèlman parèt enfim.- Gen kèk estil zanmitay nan lavni yo enkli pou enfim tout
pointer-events
sou bouton jete lank. - Lè l sèvi avèk bouton ki andikape yo
<a>
ta dwe gen ladanaria-disabled="true"
atribi a pou endike eta a nan eleman nan teknoloji asistans. - Bouton andikape lè l sèvi avèk
<a>
pa ta dwe gen ladanhref
atribi a.
<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>
Lyen fonksyonalite opozisyon
Pou kouvri ka kote ou dwe kenbe href
atribi a sou yon lyen ki andikape, .disabled
klas la itilize pointer-events: none
pou eseye enfim fonksyonalite lyen nan <a>
s. Remake byen ke pwopriyete CSS sa a poko estanda pou HTML, men tout navigatè modèn yo sipòte li. Anplis de sa, menm nan navigatè ki sipòte pointer-events: none
, navigasyon klavye rete pa afekte, sa vle di ke itilizatè klavye ki wè ak itilizatè teknoloji asistans yo ap toujou kapab aktive lyen sa yo. Se konsa, yo dwe an sekirite, anplis de aria-disabled="true"
, enkli tou yon tabindex="-1"
atribi sou lyen sa yo pou anpeche yo resevwa konsantre klavye, epi sèvi ak JavaScript koutim pou enfim fonksyonalite yo nèt.
<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>
Bouton blòk yo
Kreye pil reponn ak tout lajè, "bouton blòk" tankou sa yo ki nan Bootstrap 4 ak yon melanj de ekspozisyon nou yo ak sèvis piblik espas. Lè nou sèvi ak sèvis piblik olye de klas espesifik bouton yo, nou gen pi gwo kontwòl sou espas, aliyman, ak konpòtman reponn.
<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>
Isit la nou kreye yon varyasyon reponn, kòmanse ak bouton vètikal anpile jouk pwen md
rupture a, kote .d-md-block
ranplase .d-grid
klas la, konsa anile gap-2
sèvis piblik la. Redimensionner navigatè ou a pou wè yo chanje.
<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>
Ou ka ajiste lajè bouton blòk ou yo ak klas lajè kolòn kadriyaj la. Pou egzanp, pou yon "bouton blòk" mwatye lajè, sèvi ak .col-6
. Santre li orizontal ak .mx-auto
, tou.
<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>
Lòt sèvis piblik yo ka itilize pou ajiste aliyman bouton lè orizontal. Isit la nou te pran egzanp repons anvan nou an epi ajoute kèk sèvis piblik fleksib ak yon sèvis piblik Marge sou bouton an a dwat aliman bouton yo lè yo pa anpile ankò.
<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 bouton
Plugin bouton an pèmèt ou kreye senp bouton aktive on/off.
Chanje eta yo
Ajoute data-bs-toggle="button"
pou chanje eta bouton an active
. Si w ap chanje yon bouton davans, ou dwe ajoute .active
klas la manyèlman epi aria-pressed="true"
asire w ke li transmèt yon fason apwopriye nan teknoloji asistans.
<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>
Metòd
Ou ka kreye yon egzanp bouton ak konstrukteur bouton an, pou egzanp:
var button = document.getElementById('myButton')
var bsButton = new bootstrap.Button(button)
Metòd | Deskripsyon |
---|---|
toggle |
Baskile pouse eta a. Bay bouton an aparans ke li te aktive. |
dispose |
Detwi bouton yon eleman. (Retire done ki estoke sou eleman DOM) |
getInstance |
Metòd estatik ki pèmèt ou jwenn egzanp bouton ki asosye ak yon eleman DOM, ou ka itilize li tankou sa a:bootstrap.Button.getInstance(element) |
getOrCreateInstance |
Metòd estatik ki retounen yon egzanp bouton ki asosye ak yon eleman DOM oswa kreye yon nouvo nan ka li pa te inisyalize. Ou ka sèvi ak li tankou sa a:bootstrap.Button.getOrCreateInstance(element) |
Pa egzanp, pou activer tout bouton
var buttons = document.querySelectorAll('.btn')
buttons.forEach(function (button) {
var button = new bootstrap.Button(button)
button.toggle()
})
Sass
Varyab
$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
Gen twa mixin pou bouton: bouton ak deskripsyon bouton mixin variant (tou de baze sou $theme-colors
), plis yon mixin gwosè bouton.
@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);
}
Boukl
Variant bouton (pou bouton regilye ak bouton deskripsyon) itilize mixin respektif yo ak $theme-colors
kat nou an pou jenere klas modifikatè yo nan 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);
}
}