Κατάρρευση
Εναλλάξτε την ορατότητα του περιεχομένου σε όλο το έργο σας με μερικές κλάσεις και τις προσθήκες JavaScript.
Πως δουλεύει
Η προσθήκη σύμπτυξης JavaScript χρησιμοποιείται για την εμφάνιση και απόκρυψη περιεχομένου. Τα κουμπιά ή οι άγκυρες χρησιμοποιούνται ως ενεργοποιητές που αντιστοιχίζονται σε συγκεκριμένα στοιχεία που αλλάζετε. Η σύμπτυξη ενός στοιχείου θα κινήσει το height
από την τρέχουσα τιμή του σε 0
. Δεδομένου του τρόπου με τον οποίο το CSS χειρίζεται κινούμενα σχέδια, δεν μπορείτε να χρησιμοποιήσετε padding
σε ένα .collapse
στοιχείο. Αντίθετα, χρησιμοποιήστε την κλάση ως ανεξάρτητο στοιχείο αναδίπλωσης.
prefers-reduced-motion
ερώτημα πολυμέσων. Δείτε την ενότητα
μειωμένης κίνησης της τεκμηρίωσης προσβασιμότητας .
Παράδειγμα
Κάντε κλικ στα κουμπιά παρακάτω για εμφάνιση και απόκρυψη ενός άλλου στοιχείου μέσω αλλαγών κλάσης:
.collapse
κρύβει περιεχόμενο.collapsing
εφαρμόζεται κατά τις μεταβάσεις.collapse.show
δείχνει περιεχόμενο
Γενικά, συνιστούμε να χρησιμοποιήσετε ένα κουμπί με το data-bs-target
χαρακτηριστικό. Αν και δεν συνιστάται από σημασιολογική άποψη, μπορείτε επίσης να χρησιμοποιήσετε έναν σύνδεσμο με το href
χαρακτηριστικό (και a role="button"
). Και στις δύο περιπτώσεις data-bs-toggle="collapse"
απαιτείται.
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Button with data-bs-target
</button>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-body">
Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
Οριζόντιος
Το πρόσθετο σύμπτυξης υποστηρίζει επίσης την οριζόντια σύμπτυξη. Προσθέστε την .collapse-horizontal
κλάση τροποποιητή για μετάβαση στο width
αντί height
και ορίστε το a width
στο άμεσο θυγατρικό στοιχείο. Μη διστάσετε να γράψετε το δικό σας προσαρμοσμένο Sass, να χρησιμοποιήσετε ενσωματωμένα στυλ ή να χρησιμοποιήσετε τα βοηθητικά προγράμματα πλάτους .
min-height
σετ για την αποφυγή υπερβολικών βαφών στα έγγραφά μας, αυτό δεν απαιτείται ρητά.
Απαιτείται μόνο το width
στοιχείο on the child.
<p>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
Toggle width collapse
</button>
</p>
<div style="min-height: 120px;">
<div class="collapse collapse-horizontal" id="collapseWidthExample">
<div class="card card-body" style="width: 300px;">
This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
</div>
</div>
</div>
Πολλαπλοί στόχοι
Το A <button>
ή <a>
μπορεί να εμφανίσει και να αποκρύψει πολλά στοιχεία αναφέροντάς τα με έναν επιλογέα στο χαρακτηριστικό του href
ή data-bs-target
. Πολλαπλές <button>
ή <a>
μπορούν να εμφανίσουν και να αποκρύψουν ένα στοιχείο εάν το καθένα αναφέρεται σε αυτό με το χαρακτηριστικό href
ή το data-bs-target
χαρακτηριστικό του
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
</div>
Προσιτότητα
Φροντίστε να προσθέσετε aria-expanded
στο στοιχείο ελέγχου. Αυτό το χαρακτηριστικό μεταφέρει ρητά την τρέχουσα κατάσταση του πτυσσόμενου στοιχείου που είναι συνδεδεμένο με τον έλεγχο των συσκευών ανάγνωσης οθόνης και παρόμοιες υποβοηθητικές τεχνολογίες. Εάν το πτυσσόμενο στοιχείο είναι κλειστό από προεπιλογή, το χαρακτηριστικό στο στοιχείο ελέγχου θα πρέπει να έχει τιμή aria-expanded="false"
. Εάν έχετε ρυθμίσει το πτυσσόμενο στοιχείο να είναι ανοιχτό από προεπιλογή χρησιμοποιώντας την show
κλάση, ορίστε aria-expanded="true"
το στο στοιχείο ελέγχου. Η προσθήκη θα αλλάξει αυτόματα αυτό το χαρακτηριστικό στο στοιχείο ελέγχου με βάση το αν το πτυσσόμενο στοιχείο έχει ανοίξει ή κλείσει (μέσω JavaScript ή επειδή ο χρήστης ενεργοποίησε ένα άλλο στοιχείο ελέγχου που επίσης συνδέεται με το ίδιο πτυσσόμενο στοιχείο). Εάν το στοιχείο HTML του στοιχείου ελέγχου δεν είναι κουμπί (π.χ. an <a>
ή <div>
), το χαρακτηριστικόrole="button"
πρέπει να προστεθεί στο στοιχείο.
Εάν το στοιχείο ελέγχου σας στοχεύει ένα μεμονωμένο πτυσσόμενο στοιχείο – δηλαδή το data-bs-target
χαρακτηριστικό δείχνει σε έναν id
επιλογέα – θα πρέπει να προσθέσετε το aria-controls
χαρακτηριστικό στο στοιχείο ελέγχου, που περιέχει το id
στοιχείο του πτυσσόμενου στοιχείου. Οι σύγχρονες συσκευές ανάγνωσης οθόνης και παρόμοιες υποστηρικτικές τεχνολογίες χρησιμοποιούν αυτό το χαρακτηριστικό για να παρέχουν στους χρήστες πρόσθετες συντομεύσεις για την απευθείας πλοήγηση στο ίδιο το πτυσσόμενο στοιχείο.
Σημειώστε ότι η τρέχουσα εφαρμογή του Bootstrap δεν καλύπτει τις διάφορες προαιρετικές αλληλεπιδράσεις πληκτρολογίου που περιγράφονται στο μοτίβο ακορντεόν του Οδηγού πρακτικών συγγραφής ARIA - θα χρειαστεί να τις συμπεριλάβετε μόνοι σας με προσαρμοσμένη JavaScript.
Sass
Μεταβλητές
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
Τάξεις
Οι τάξεις μετάβασης σύμπτυξης μπορούν να βρεθούν στο scss/_transitions.scss
καθώς μοιράζονται σε πολλαπλά στοιχεία (σύμπτυξη και ακορντεόν).
.collapse {
&:not(.show) {
display: none;
}
}
.collapsing {
height: 0;
overflow: hidden;
@include transition($transition-collapse);
&.collapse-horizontal {
width: 0;
height: auto;
@include transition($transition-collapse-width);
}
}
Χρήση
Το πρόσθετο κατάρρευσης χρησιμοποιεί μερικές κατηγορίες για να χειριστεί τη βαριά ανύψωση:
.collapse
κρύβει το περιεχόμενο.collapse.show
δείχνει το περιεχόμενο.collapsing
προστίθεται όταν ξεκινά η μετάβαση και αφαιρείται όταν τελειώσει
Αυτές οι τάξεις βρίσκονται στο _transitions.scss
.
Μέσω χαρακτηριστικών δεδομένων
Απλώς προσθέστε data-bs-toggle="collapse"
και a data-bs-target
στο στοιχείο για να εκχωρήσετε αυτόματα τον έλεγχο ενός ή περισσότερων πτυσσόμενων στοιχείων. Το data-bs-target
χαρακτηριστικό δέχεται έναν επιλογέα CSS για εφαρμογή της σύμπτυξης. Φροντίστε να προσθέσετε την κλάση collapse
στο πτυσσόμενο στοιχείο. Εάν θέλετε να είναι ανοιχτό από προεπιλογή, προσθέστε την πρόσθετη κλάση show
.
Για να προσθέσετε διαχείριση ομάδας που μοιάζει με ακορντεόν σε μια πτυσσόμενη περιοχή, προσθέστε το χαρακτηριστικό δεδομένων data-bs-parent="#selector"
. Ανατρέξτε στη σελίδα του ακορντεόν για περισσότερες πληροφορίες.
Μέσω JavaScript
Ενεργοποίηση μη αυτόματα με:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
Επιλογές
Καθώς οι επιλογές μπορούν να μεταβιβαστούν μέσω χαρακτηριστικών δεδομένων ή JavaScript, μπορείτε να προσαρτήσετε ένα όνομα επιλογής στο data-bs-
, όπως στο data-bs-animation="{value}"
. Φροντίστε να αλλάξετε τον τύπο θήκης του ονόματος της επιλογής από « camelCase » σε « kebab-case » όταν μεταβιβάζετε τις επιλογές μέσω των χαρακτηριστικών δεδομένων. Για παράδειγμα, χρησιμοποιήστε data-bs-custom-class="beautifier"
αντί για data-bs-customClass="beautifier"
.
Από το Bootstrap 5.2.0, όλα τα στοιχεία υποστηρίζουν ένα πειραματικό χαρακτηριστικό δεσμευμένων δεδομένων data-bs-config
που μπορεί να φιλοξενήσει απλή διαμόρφωση στοιχείων ως συμβολοσειρά JSON. Όταν ένα στοιχείο έχει data-bs-config='{"delay":0, "title":123}'
και data-bs-title="456"
χαρακτηριστικά, η τελική title
τιμή θα είναι 456
και τα ξεχωριστά χαρακτηριστικά δεδομένων θα αντικαταστήσουν τις τιμές που δίνονται στο data-bs-config
. Επιπλέον, τα υπάρχοντα χαρακτηριστικά δεδομένων μπορούν να φιλοξενήσουν τιμές JSON όπως data-bs-delay='{"show":0,"hide":150}'
.
Ονομα | Τύπος | Προκαθορισμένο | Περιγραφή |
---|---|---|---|
parent |
επιλογέας, στοιχείο DOM | null |
Εάν παρέχεται γονέας, τότε όλα τα πτυσσόμενα στοιχεία κάτω από τον καθορισμένο γονέα θα κλείσουν όταν εμφανιστεί αυτό το πτυσσόμενο στοιχείο. (παρόμοια με την παραδοσιακή συμπεριφορά ακορντεόν - αυτό εξαρτάται από την card τάξη). Το χαρακτηριστικό πρέπει να οριστεί στην πτυσσόμενη περιοχή στόχου. |
toggle |
boolean | true |
Εναλλάσσει το πτυσσόμενο στοιχείο κατά την επίκληση. |
Μέθοδοι
Ασύγχρονες μέθοδοι και μεταβάσεις
Όλες οι μέθοδοι API είναι ασύγχρονες και ξεκινούν μια μετάβαση . Επιστρέφουν στον καλούντα μόλις ξεκινήσει η μετάβαση αλλά πριν τελειώσει . Επιπλέον, μια κλήση μεθόδου σε ένα στοιχείο μετάβασης θα αγνοηθεί .
Δείτε την τεκμηρίωση JavaScript για περισσότερες πληροφορίες .
Ενεργοποιεί το περιεχόμενό σας ως πτυσσόμενο στοιχείο. Αποδέχεται μια προαιρετική επιλογή object
.
Μπορείτε να δημιουργήσετε ένα στιγμιότυπο σύμπτυξης με τον κατασκευαστή, για παράδειγμα:
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
Μέθοδος | Περιγραφή |
---|---|
dispose |
Καταστρέφει την κατάρρευση ενός στοιχείου. (Καταργεί τα αποθηκευμένα δεδομένα στο στοιχείο DOM) |
getInstance |
Στατική μέθοδος που σας επιτρέπει να λάβετε την εμφάνιση σύμπτυξης που σχετίζεται με ένα στοιχείο DOM, μπορείτε να τη χρησιμοποιήσετε ως εξής: bootstrap.Collapse.getInstance(element) . |
getOrCreateInstance |
Στατική μέθοδος που επιστρέφει ένα στιγμιότυπο σύμπτυξης που σχετίζεται με ένα στοιχείο DOM ή δημιουργεί ένα νέο σε περίπτωση που δεν είχε αρχικοποιηθεί. Μπορείτε να το χρησιμοποιήσετε ως εξής: bootstrap.Collapse.getOrCreateInstance(element) . |
hide |
Κρύβει ένα πτυσσόμενο στοιχείο. Επιστρέφει στον καλούντα πριν από την πραγματική απόκρυψη του πτυσσόμενου στοιχείου (π.χ. πριν συμβεί το hidden.bs.collapse συμβάν). |
show |
Εμφανίζει ένα πτυσσόμενο στοιχείο. Επιστρέφει στον καλούντα πριν εμφανιστεί πραγματικά το πτυσσόμενο στοιχείο (π.χ. πριν συμβεί το shown.bs.collapse συμβάν). |
toggle |
Εναλλάσσει ένα πτυσσόμενο στοιχείο σε εμφάνιση ή απόκρυψη. Επιστρέφει στον καλούντα πριν εμφανιστεί ή κρυφτεί το πτυσσόμενο στοιχείο (δηλαδή πριν συμβεί το shown.bs.collapse ή το hidden.bs.collapse συμβάν). |
Εκδηλώσεις
Η κλάση κατάρρευσης του Bootstrap εκθέτει μερικά συμβάντα για σύνδεση στη λειτουργικότητα κατάρρευσης.
Τύπος συμβάντος | Περιγραφή |
---|---|
hide.bs.collapse |
Αυτό το συμβάν ενεργοποιείται αμέσως μετά την hide κλήση της μεθόδου. |
hidden.bs.collapse |
Αυτό το συμβάν ενεργοποιείται όταν ένα στοιχείο σύμπτυξης έχει κρυφτεί από τον χρήστη (θα περιμένει να ολοκληρωθούν οι μεταβάσεις CSS). |
show.bs.collapse |
Αυτό το συμβάν ενεργοποιείται αμέσως όταν show καλείται η μέθοδος παρουσίας. |
shown.bs.collapse |
Αυτό το συμβάν ενεργοποιείται όταν ένα στοιχείο σύμπτυξης έχει γίνει ορατό στον χρήστη (θα περιμένει να ολοκληρωθούν οι μεταβάσεις CSS). |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})