Κουμπιά
Χρησιμοποιήστε τα προσαρμοσμένα στυλ κουμπιών του Bootstrap για ενέργειες σε φόρμες, παράθυρα διαλόγου και άλλα με υποστήριξη για πολλά μεγέθη, καταστάσεις και πολλά άλλα.
Παραδείγματα
Το Bootstrap περιλαμβάνει πολλά προκαθορισμένα στυλ κουμπιών, το καθένα εξυπηρετεί τον δικό του σημασιολογικό σκοπό, με μερικά επιπλέον στοιχεία για περισσότερο έλεγχο.
<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>
Μετάδοση νοήματος στις υποστηρικτικές τεχνολογίες
Η χρήση χρώματος για να προσθέσετε νόημα παρέχει μόνο μια οπτική ένδειξη, η οποία δεν θα μεταδοθεί στους χρήστες βοηθητικών τεχνολογιών – όπως οι συσκευές ανάγνωσης οθόνης. Βεβαιωθείτε ότι οι πληροφορίες που υποδηλώνονται με το χρώμα είναι είτε προφανείς από το ίδιο το περιεχόμενο (π.χ. το ορατό κείμενο), είτε περιλαμβάνονται με εναλλακτικά μέσα, όπως πρόσθετο κείμενο που είναι κρυμμένο με την .visually-hidden
τάξη.
Απενεργοποιήστε την αναδίπλωση κειμένου
Εάν δεν θέλετε να αναδιπλώνεται το κείμενο του κουμπιού, μπορείτε να προσθέσετε την .text-nowrap
τάξη στο κουμπί. Στο Sass, μπορείτε να ρυθμίσετε $btn-white-space: nowrap
την απενεργοποίηση της αναδίπλωσης κειμένου για κάθε κουμπί.
Ετικέτες κουμπιών
Οι .btn
κλάσεις έχουν σχεδιαστεί για χρήση με το <button>
στοιχείο. Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε αυτές τις κλάσεις σε <a>
ή <input>
στοιχεία (αν και ορισμένα προγράμματα περιήγησης ενδέχεται να εφαρμόζουν μια ελαφρώς διαφορετική απόδοση).
Όταν χρησιμοποιείτε κατηγορίες κουμπιών σε <a>
στοιχεία που χρησιμοποιούνται για την ενεργοποίηση της λειτουργικότητας στη σελίδα (όπως η σύμπτυξη περιεχομένου), αντί για τη σύνδεση σε νέες σελίδες ή ενότητες στην τρέχουσα σελίδα, αυτοί οι σύνδεσμοι θα πρέπει να δίνονται για role="button"
να μεταφέρουν κατάλληλα τον σκοπό τους σε βοηθητικές τεχνολογίες όπως π.χ. αναγνώστες οθόνης.
<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">
Κουμπιά περίγραμμα
Χρειάζεστε ένα κουμπί, αλλά όχι τα έντονα χρώματα φόντου που φέρνουν; Αντικαταστήστε τις προεπιλεγμένες κατηγορίες τροποποιητών με .btn-outline-*
αυτές για να αφαιρέσετε όλες τις εικόνες φόντου και τα χρώματα σε οποιοδήποτε κουμπί.
<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>
Μεγέθη
Θέλετε μεγαλύτερα ή μικρότερα κουμπιά; Προσθέστε .btn-lg
ή .btn-sm
για επιπλέον μεγέθη.
<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>
Μπορείτε ακόμη και να δημιουργήσετε το δικό σας προσαρμοσμένο μέγεθος με μεταβλητές CSS:
<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>
Κατάσταση αναπηρίας
Κάντε τα κουμπιά να φαίνονται ανενεργά προσθέτοντας το disabled
χαρακτηριστικό boolean σε οποιοδήποτε <button>
στοιχείο. Τα απενεργοποιημένα κουμπιά έχουν pointer-events: none
εφαρμοστεί, αποτρέποντας την ενεργοποίηση του δείκτη και των ενεργών καταστάσεων.
<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>
Τα απενεργοποιημένα κουμπιά που χρησιμοποιούν το <a>
στοιχείο συμπεριφέρονται λίγο διαφορετικά:
<a>
s δεν υποστηρίζουν τοdisabled
χαρακτηριστικό, επομένως πρέπει να προσθέσετε την.disabled
κλάση για να φαίνεται οπτικά απενεργοποιημένη.- Περιλαμβάνονται ορισμένα φιλικά προς το μέλλον στυλ για την απενεργοποίηση όλων
pointer-events
των κουμπιών αγκύρωσης. - Τα απενεργοποιημένα κουμπιά που χρησιμοποιούν
<a>
θα πρέπει να περιλαμβάνουν τοaria-disabled="true"
χαρακτηριστικό που υποδεικνύει την κατάσταση του στοιχείου στις υποστηρικτικές τεχνολογίες. - Τα απενεργοποιημένα κουμπιά που χρησιμοποιούν
<a>
δεν πρέπει να περιλαμβάνουν τοhref
χαρακτηριστικό.
<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>
Προειδοποίηση λειτουργικότητας συνδέσμου
Για να καλύψετε περιπτώσεις όπου πρέπει να διατηρήσετε το href
χαρακτηριστικό σε έναν απενεργοποιημένο σύνδεσμο, η .disabled
κλάση χρησιμοποιεί pointer-events: none
για να προσπαθήσει να απενεργοποιήσει τη λειτουργία συνδέσμου του <a>
s. Σημειώστε ότι αυτή η ιδιότητα CSS δεν είναι ακόμη τυποποιημένη για HTML, αλλά όλα τα σύγχρονα προγράμματα περιήγησης την υποστηρίζουν. Επιπλέον, ακόμη και σε προγράμματα περιήγησης που υποστηρίζουν pointer-events: none
, η πλοήγηση με πληκτρολόγιο παραμένει ανεπηρέαστη, πράγμα που σημαίνει ότι οι χρήστες πληκτρολογίου με όραση και οι χρήστες βοηθητικών τεχνολογιών θα εξακολουθούν να μπορούν να ενεργοποιούν αυτούς τους συνδέσμους. Επομένως, για να είστε ασφαλείς, εκτός από το aria-disabled="true"
, συμπεριλάβετε επίσης ένα tabindex="-1"
χαρακτηριστικό σε αυτούς τους συνδέσμους για να τους αποτρέψετε από τη λήψη εστίασης στο πληκτρολόγιο και χρησιμοποιήστε προσαρμοσμένη JavaScript για να απενεργοποιήσετε εντελώς τη λειτουργικότητά τους.
<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>
Μπλοκ κουμπιά
Δημιουργήστε στοίβες με "κουμπιά αποκλεισμού" πλήρους πλάτους, όπως αυτά στο Bootstrap 4 με έναν συνδυασμό των βοηθητικών προγραμμάτων προβολής και κενών. Χρησιμοποιώντας βοηθητικά προγράμματα αντί για συγκεκριμένες κατηγορίες κουμπιών, έχουμε πολύ μεγαλύτερο έλεγχο στις συμπεριφορές αποστάσεων, ευθυγράμμισης και απόκρισης.
<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>
Εδώ δημιουργούμε μια απόκριση παραλλαγή, ξεκινώντας με κάθετα στοιβαγμένα κουμπιά μέχρι το md
σημείο διακοπής, όπου .d-md-block
αντικαθιστά την .d-grid
κλάση, ακυρώνοντας έτσι το gap-2
βοηθητικό πρόγραμμα. Αλλάξτε το μέγεθος του προγράμματος περιήγησής σας για να τα δείτε να αλλάζουν.
<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>
Μπορείτε να προσαρμόσετε το πλάτος των κουμπιών μπλοκ σας με κατηγορίες πλάτους στηλών πλέγματος. Για παράδειγμα, για ένα "κουμπί αποκλεισμού" μισού πλάτους, χρησιμοποιήστε το .col-6
. Κεντράρετε οριζόντια και με το .mx-auto
.
<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>
Μπορούν να χρησιμοποιηθούν πρόσθετα βοηθητικά προγράμματα για τη ρύθμιση της ευθυγράμμισης των κουμπιών σε οριζόντια θέση. Εδώ έχουμε πάρει το προηγούμενο αποκρινόμενο παράδειγμα μας και προσθέσαμε μερικά βοηθητικά προγράμματα flex και ένα βοηθητικό πρόγραμμα περιθωρίου στο κουμπί για να ευθυγραμμιστούν δεξιά τα κουμπιά όταν δεν είναι πλέον στοιβαγμένα.
<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>
Προσθήκη κουμπιού
Η προσθήκη κουμπιών σάς επιτρέπει να δημιουργείτε απλά κουμπιά ενεργοποίησης/απενεργοποίησης.
Εναλλαγή καταστάσεων
Προσθήκη data-bs-toggle="button"
για εναλλαγή της κατάστασης ενός κουμπιού active
. Εάν κάνετε εκ των προτέρων εναλλαγή ενός κουμπιού, πρέπει να προσθέσετε χειροκίνητα την .active
κλάση και aria-pressed="true"
να διασφαλίσετε ότι μεταφέρεται κατάλληλα στις υποστηρικτικές τεχνολογίες.
<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>
Μέθοδοι
Μπορείτε να δημιουργήσετε μια παρουσία κουμπιού με τον κατασκευαστή κουμπιών, για παράδειγμα:
const bsButton = new bootstrap.Button('#myButton')
Μέθοδος | Περιγραφή |
---|---|
dispose |
Καταστρέφει το κουμπί ενός στοιχείου. (Καταργεί τα αποθηκευμένα δεδομένα στο στοιχείο DOM) |
getInstance |
Στατική μέθοδος που σας επιτρέπει να λάβετε την εμφάνιση του κουμπιού που σχετίζεται με ένα στοιχείο DOM, μπορείτε να τη χρησιμοποιήσετε ως εξής: bootstrap.Button.getInstance(element) . |
getOrCreateInstance |
Στατική μέθοδος που επιστρέφει μια παρουσία κουμπιού που σχετίζεται με ένα στοιχείο DOM ή δημιουργεί μια νέα σε περίπτωση που δεν είχε αρχικοποιηθεί. Μπορείτε να το χρησιμοποιήσετε ως εξής: bootstrap.Button.getOrCreateInstance(element) . |
toggle |
Εναλλάσσει την κατάσταση ώθησης. Δίνει στο κουμπί την εμφάνιση ότι έχει ενεργοποιηθεί. |
Για παράδειγμα, για εναλλαγή όλων των κουμπιών
document.querySelectorAll('.btn').forEach(buttonElement => {
const button = bootstrap.Button.getOrCreateInstance(buttonElement)
button.toggle()
})
CSS
Μεταβλητές
Προστέθηκε στην έκδοση 5.2.0Ως μέρος της εξελισσόμενης προσέγγισης μεταβλητών CSS του Bootstrap, τα κουμπιά χρησιμοποιούν πλέον τοπικές μεταβλητές CSS ενεργοποιημένες .btn
για βελτιωμένη προσαρμογή σε πραγματικό χρόνο. Οι τιμές για τις μεταβλητές CSS ορίζονται μέσω Sass, επομένως η προσαρμογή Sass εξακολουθεί να υποστηρίζεται.
--#{$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);
Κάθε .btn-*
κλάση τροποποιητή ενημερώνει τις κατάλληλες μεταβλητές CSS για να ελαχιστοποιήσει τους πρόσθετους κανόνες CSS με τα button-variant()
, button-outline-variant()
, και button-size()
mixins μας.
Ακολουθεί ένα παράδειγμα δημιουργίας μιας προσαρμοσμένης .btn-*
κατηγορίας τροποποιητών, όπως κάνουμε για τα κουμπιά μοναδικά για τα έγγραφά μας, αναθέτοντας εκ νέου τις μεταβλητές CSS του Bootstrap με ένα μείγμα των δικών μας μεταβλητών CSS και Sass.
.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
$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
Υπάρχουν τρεις μίξεις για κουμπιά: μίξεις παραλλαγών με κουμπιά και περιγράμματος κουμπιών (και οι δύο βασίζονται στο $theme-colors
), συν μια μίξη μεγέθους κουμπιού.
@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
Οι παραλλαγές κουμπιών (για κανονικά κουμπιά και κουμπιά περιγράμματος) χρησιμοποιούν τις αντίστοιχες μίξεις τους με τον $theme-colors
χάρτη μας για να δημιουργήσουν τις κατηγορίες τροποποιητών στο 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);
}
}