Popovers
Τεκμηρίωση και παραδείγματα για την προσθήκη popover Bootstrap, όπως αυτά που βρίσκονται στο iOS, σε οποιοδήποτε στοιχείο στον ιστότοπό σας.
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Πράγματα που πρέπει να γνωρίζετε όταν χρησιμοποιείτε την προσθήκη popover:
- Τα popover βασίζονται στη βιβλιοθήκη Popper τρίτου μέρους για την τοποθέτηση. Πρέπει να συμπεριλάβετε το popper.min.js πριν το bootstrap.js ή να χρησιμοποιήσετε το
bootstrap.bundle.min.js
/bootstrap.bundle.js
που περιέχει Popper για να λειτουργήσουν τα popover! - Τα popovers απαιτούν την προσθήκη συμβουλής εργαλείου ως εξάρτηση.
- Εάν δημιουργείτε το JavaScript μας από την πηγή, απαιτεί
util.js
. - Τα popover επιλέγονται για λόγους απόδοσης, επομένως πρέπει να τα αρχικοποιήσετε μόνοι σας .
- Το μηδενικό μήκος
title
καιcontent
οι τιμές δεν θα εμφανίσουν ποτέ popover. - Καθορίστε
container: 'body'
για να αποφύγετε την απόδοση προβλημάτων σε πιο σύνθετα στοιχεία (όπως οι ομάδες εισόδου, οι ομάδες κουμπιών κ.λπ.). - Η ενεργοποίηση popover σε κρυφά στοιχεία δεν θα λειτουργήσει.
- Τα popover για
.disabled
ήdisabled
τα στοιχεία πρέπει να ενεργοποιούνται σε ένα στοιχείο περιτυλίγματος. - Όταν ενεργοποιούνται από άγκυρες που τυλίγονται σε πολλές γραμμές, τα popover θα βρίσκονται στο κέντρο μεταξύ του συνολικού πλάτους των αγκυρίων. Χρησιμοποιήστε
.text-nowrap
το στο<a>
s σας για να αποφύγετε αυτήν τη συμπεριφορά. - Τα popover πρέπει να είναι κρυφά πριν αφαιρεθούν τα αντίστοιχα στοιχεία τους από το DOM.
- Τα popovers μπορούν να ενεργοποιηθούν χάρη σε ένα στοιχείο μέσα σε ένα σκιερό DOM.
prefers-reduced-motion
ερώτημα πολυμέσων. Δείτε την ενότητα
μειωμένης κίνησης της τεκμηρίωσης προσβασιμότητας .
Συνεχίστε να διαβάζετε για να δείτε πώς λειτουργούν τα popovers με μερικά παραδείγματα.
Παράδειγμα: Ενεργοποιήστε τα popovers παντού
Ένας τρόπος για να αρχικοποιήσετε όλα τα popover σε μια σελίδα θα ήταν να τα επιλέξετε με βάση το data-toggle
χαρακτηριστικό τους:
$(function () {
$('[data-toggle="popover"]').popover()
})
Παράδειγμα: Χρησιμοποιώντας την container
επιλογή
Όταν έχετε κάποια στυλ σε ένα γονικό στοιχείο που παρεμβαίνουν σε ένα popover, θα θέλετε να καθορίσετε ένα προσαρμοσμένο container
, έτσι ώστε το HTML του popover να εμφανίζεται σε αυτό το στοιχείο.
$(function () {
$('.example-popover').popover({
container: 'body'
})
})
Παράδειγμα
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Τέσσερις κατευθύνσεις
Είναι διαθέσιμες τέσσερις επιλογές: επάνω, δεξιά, κάτω και αριστερή στοίχιση.
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Left popover">
Popover on left
</button>
Παράβλεψη στο επόμενο κλικ
Χρησιμοποιήστε το focus
έναυσμα για να απορρίψετε τα popover στο επόμενο κλικ του χρήστη σε ένα διαφορετικό στοιχείο από το στοιχείο εναλλαγής.
Απαιτείται συγκεκριμένη σήμανση για την απόρριψη στο επόμενο κλικ
Για σωστή συμπεριφορά μεταξύ προγραμμάτων περιήγησης και μεταξύ πλατφορμών, πρέπει να χρησιμοποιήσετε την <a>
ετικέτα, όχι την <button>
ετικέτα, και πρέπει επίσης να συμπεριλάβετε ένα tabindex
χαρακτηριστικό.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$('.popover-dismiss').popover({
trigger: 'focus'
})
Απενεργοποιημένα στοιχεία
Τα στοιχεία με το disabled
χαρακτηριστικό δεν είναι διαδραστικά, πράγμα που σημαίνει ότι οι χρήστες δεν μπορούν να τοποθετήσουν το δείκτη του ποντικιού ή να κάνουν κλικ σε αυτά για να ενεργοποιήσουν ένα popover (ή επεξήγηση εργαλείου). Ως λύση, θα θελήσετε να ενεργοποιήσετε το popover από ένα περιτύλιγμα <div>
ή <span>
και να παρακάμψετε το pointer-events
στοιχείο στο απενεργοποιημένο στοιχείο.
Για απενεργοποιημένες ενεργοποιήσεις popover, μπορείτε επίσης να προτιμάτε data-trigger="hover"
το popover να εμφανίζεται ως άμεση οπτική ανατροφοδότηση στους χρήστες σας, καθώς ενδέχεται να μην περιμένουν να κάνουν κλικ σε ένα απενεργοποιημένο στοιχείο.
<span class="d-inline-block" data-toggle="popover" data-content="Disabled popover">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>
Χρήση
Ενεργοποίηση popovers μέσω JavaScript:
$('#example').popover(options)
Επιτάχυνση GPU
Τα popover μερικές φορές εμφανίζονται θολά σε συσκευές Windows 10 λόγω της επιτάχυνσης της GPU και ενός τροποποιημένου DPI συστήματος. Η λύση για αυτό στο v4 είναι να απενεργοποιήσετε την επιτάχυνση GPU όπως απαιτείται στα popover σας.
Προτεινόμενη διόρθωση:
Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))
Κάνοντας τα popover να λειτουργούν για χρήστες πληκτρολογίου και υποστηρικτικής τεχνολογίας
Για να επιτρέψετε στους χρήστες του πληκτρολογίου να ενεργοποιούν τα popover σας, θα πρέπει να τα προσθέσετε μόνο σε στοιχεία HTML που είναι παραδοσιακά εστιάσιμα στο πληκτρολόγιο και διαδραστικά (όπως σύνδεσμοι ή στοιχεία ελέγχου φορμών). Παρόλο που τα αυθαίρετα στοιχεία HTML (όπως το <span>
s) μπορούν να εστιαστούν με την προσθήκη του tabindex="0"
χαρακτηριστικού, αυτό θα προσθέσει δυνητικά ενοχλητικές και μπερδεμένες στηλοθέτες σε μη διαδραστικά στοιχεία για χρήστες πληκτρολογίου και οι περισσότερες υποστηρικτικές τεχνολογίες επί του παρόντος δεν ανακοινώνουν το περιεχόμενο του popover σε αυτήν την περίπτωση . Επιπλέον, μην βασίζεστε αποκλειστικά στο hover
έναυσμα για τα popover σας, καθώς αυτό θα καταστήσει αδύνατη την ενεργοποίησή τους για τους χρήστες πληκτρολογίου.
Ενώ μπορείτε να εισαγάγετε πλούσιο, δομημένο HTML σε popover με την html
επιλογή, σας συνιστούμε ανεπιφύλακτα να αποφύγετε την προσθήκη υπερβολικού όγκου περιεχομένου. Ο τρόπος με τον οποίο λειτουργούν τα popover επί του παρόντος είναι ότι, μόλις εμφανιστούν, το περιεχόμενό τους συνδέεται με το στοιχείο ενεργοποίησης με το aria-describedby
χαρακτηριστικό. Ως αποτέλεσμα, το σύνολο του περιεχομένου του popover θα ανακοινωθεί στους χρήστες υποστηρικτικής τεχνολογίας ως μια μεγάλη, αδιάλειπτη ροή.
Επιπλέον, ενώ είναι δυνατό να συμπεριλάβετε επίσης διαδραστικά στοιχεία ελέγχου (όπως στοιχεία φόρμας ή συνδέσμους) στο popover σας (προσθέτοντας αυτά τα στοιχεία στα whiteList
ή επιτρεπόμενα χαρακτηριστικά και ετικέτες), έχετε υπόψη ότι επί του παρόντος το popover δεν διαχειρίζεται τη σειρά εστίασης του πληκτρολογίου. Όταν ένας χρήστης πληκτρολογίου ανοίγει ένα popover, η εστίαση παραμένει στο στοιχείο ενεργοποίησης και, καθώς το popover συνήθως δεν ακολουθεί αμέσως το έναυσμα στη δομή του εγγράφου, δεν υπάρχει καμία εγγύηση ότι η κίνηση προς τα εμπρός/πατώνταςTABθα μετακινήσει έναν χρήστη πληκτρολογίου στο ίδιο το popover. Εν ολίγοις, η απλή προσθήκη διαδραστικών στοιχείων ελέγχου σε ένα popover είναι πιθανό να καταστήσει αυτά τα στοιχεία απρόσιτα/μη χρησιμοποιήσιμα για τους χρήστες πληκτρολογίου και τους χρήστες υποστηρικτικών τεχνολογιών, ή τουλάχιστον θα δημιουργήσει μια παράλογη συνολική σειρά εστίασης. Σε αυτές τις περιπτώσεις, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε έναν τρόπο διαλόγου.
Επιλογές
Οι επιλογές μπορούν να μεταβιβαστούν μέσω χαρακτηριστικών δεδομένων ή JavaScript. Για τα χαρακτηριστικά δεδομένων, προσθέστε το όνομα της επιλογής στο data-
, όπως στο data-animation=""
.
sanitize
,
sanitizeFn
και
whiteList
δεν μπορούν να παρασχεθούν χρησιμοποιώντας χαρακτηριστικά δεδομένων.
Ονομα | Τύπος | Προκαθορισμένο | Περιγραφή |
---|---|---|---|
κινουμένων σχεδίων | boolean | αληθής | Εφαρμόστε μια μετάβαση εξαφάνισης CSS στο popover |
δοχείο | χορδή | στοιχείο | ψευδής | ψευδής | Προσθέτει το popover σε ένα συγκεκριμένο στοιχείο. Παράδειγμα: |
περιεχόμενο | χορδή | στοιχείο | λειτουργία | '' | Προεπιλεγμένη τιμή περιεχομένου εάν Εάν δοθεί μια συνάρτηση, θα κληθεί με το |
καθυστέρηση | αριθμός | αντικείμενο | 0 | Καθυστέρηση εμφάνισης και απόκρυψης του popover (ms) - δεν ισχύει για τον τύπο χειροκίνητης σκανδάλης Εάν παρέχεται ένας αριθμός, εφαρμόζεται καθυστέρηση και για την απόκρυψη/εμφάνιση Η δομή του αντικειμένου είναι: |
html | boolean | ψευδής | Εισαγάγετε HTML στο popover. Εάν είναι false, η μέθοδος του jQuery text θα χρησιμοποιηθεί για την εισαγωγή περιεχομένου στο DOM. Χρησιμοποιήστε κείμενο εάν ανησυχείτε για επιθέσεις XSS. |
τοποθέτηση | χορδή | λειτουργία | 'σωστά' | Πώς να τοποθετήσετε το popover - auto | κορυφή | κάτω | αριστερά | σωστά. Όταν μια συνάρτηση χρησιμοποιείται για τον προσδιορισμό της τοποθέτησης, καλείται με πρώτο όρισμα τον κόμβο DOM popover και δεύτερο τον κόμβο DOM στοιχείο ενεργοποίησης. Το |
εκλέκτορας | χορδή | ψευδής | ψευδής | Εάν παρέχεται επιλογέας, τα αντικείμενα popover θα εκχωρηθούν στους καθορισμένους στόχους. Στην πράξη, αυτό χρησιμοποιείται για να επιτρέψει στο δυναμικό περιεχόμενο HTML να προστεθούν popover. Δείτε αυτό και ένα ενημερωτικό παράδειγμα . |
πρότυπο | σειρά | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
Βάση HTML για χρήση κατά τη δημιουργία του popover. Το popover's Το popover's
Το πιο εξωτερικό στοιχείο περιτυλίγματος θα πρέπει να έχει την |
τίτλος | χορδή | στοιχείο | λειτουργία | '' | Προεπιλεγμένη τιμή τίτλου εάν Εάν δοθεί μια συνάρτηση, θα κληθεί με το |
δώσει το έναυσμα για | σειρά | 'Κάντε κλικ' | Πώς ενεργοποιείται το popover - κάντε κλικ | αιωρούνται | εστίαση | εγχειρίδιο. Μπορείτε να περάσετε πολλαπλούς ερεθισμούς. χωρίστε τα με ένα κενό. manual δεν μπορεί να συνδυαστεί με καμία άλλη σκανδάλη. |
αντισταθμίζεται | αριθμός | σειρά | 0 | Αντιστάθμιση του popover σε σχέση με τον στόχο του. Για περισσότερες πληροφορίες, ανατρέξτε στα έγγραφα μετατόπισης του Popper . |
εναλλακτική τοποθέτηση | χορδή | πίνακας | 'αναρρίπτω' | Επιτρέψτε να καθορίσετε ποια θέση θα χρησιμοποιήσει ο Popper στην εναλλακτική. Για περισσότερες πληροφορίες, ανατρέξτε στα έγγραφα συμπεριφοράς του Popper |
customClass | χορδή | λειτουργία | '' | Προσθέστε κλάσεις στο popover όταν εμφανίζεται. Λάβετε υπόψη ότι αυτές οι κλάσεις θα προστεθούν επιπλέον των κλάσεων που καθορίζονται στο πρότυπο. Για να προσθέσετε πολλές κλάσεις, διαχωρίστε τις με κενά: Μπορείτε επίσης να περάσετε μια συνάρτηση που θα πρέπει να επιστρέψει μια συμβολοσειρά που περιέχει επιπλέον ονόματα κλάσεων. |
Όριο | χορδή | στοιχείο | 'scrollParent' | Όριο περιορισμού υπερχείλισης του popover. Αποδέχεται τις τιμές του 'viewport' , 'window' , 'scrollParent' ή μιας αναφοράς HTMLElement (μόνο JavaScript). Για περισσότερες πληροφορίες, ανατρέξτε στα έγγραφα του Popper preventOverflow . |
απολυμάνετε | boolean | αληθής | Ενεργοποιήστε ή απενεργοποιήστε την απολύμανση. Εάν ενεργοποιηθεί 'template' , 'content' και 'title' οι επιλογές θα απολυμανθούν. Δείτε την ενότητα απολυμαντικού στην τεκμηρίωση JavaScript . |
λευκή λίστα | αντικείμενο | Προεπιλεγμένη τιμή | Αντικείμενο που περιέχει επιτρεπόμενα χαρακτηριστικά και ετικέτες |
sanitizeFn | null | λειτουργία | μηδενικό | Εδώ μπορείτε να παρέχετε τη δική σας λειτουργία απολύμανσης. Αυτό μπορεί να είναι χρήσιμο εάν προτιμάτε να χρησιμοποιήσετε μια αποκλειστική βιβλιοθήκη για να πραγματοποιήσετε απολύμανση. |
popperConfig | null | αντικείμενο | μηδενικό | Για να αλλάξετε την προεπιλεγμένη διαμόρφωση Popper του Bootstrap, δείτε τη διαμόρφωση του Popper |
Χαρακτηριστικά δεδομένων για μεμονωμένα popovers
Οι επιλογές για μεμονωμένα popover μπορούν εναλλακτικά να καθοριστούν μέσω της χρήσης των χαρακτηριστικών δεδομένων, όπως εξηγείται παραπάνω.
Μέθοδοι
Ασύγχρονες μέθοδοι και μεταβάσεις
Όλες οι μέθοδοι API είναι ασύγχρονες και ξεκινούν μια μετάβαση . Επιστρέφουν στον καλούντα μόλις ξεκινήσει η μετάβαση αλλά πριν τελειώσει . Επιπλέον, μια κλήση μεθόδου σε ένα στοιχείο μετάβασης θα αγνοηθεί .
Δείτε την τεκμηρίωση JavaScript για περισσότερες πληροφορίες .
$().popover(options)
Αρχικοποιεί τα popover για μια συλλογή στοιχείων.
.popover('show')
Αποκαλύπτει το popover ενός στοιχείου. Επιστρέφει στον καλούντα πριν εμφανιστεί πραγματικά το popover (δηλαδή πριν συμβεί το shown.bs.popover
συμβάν). Αυτό θεωρείται μια «χειροκίνητη» ενεργοποίηση του popover. Τα popover των οποίων ο τίτλος και το περιεχόμενο είναι και τα δύο μηδενικού μήκους δεν εμφανίζονται ποτέ.
$('#element').popover('show')
.popover('hide')
Κρύβει το popover ενός στοιχείου. Επιστρέφει στον καλούντα πριν από την πραγματική απόκρυψη του popover (δηλαδή πριν συμβεί το hidden.bs.popover
συμβάν). Αυτό θεωρείται μια «χειροκίνητη» ενεργοποίηση του popover.
$('#element').popover('hide')
.popover('toggle')
Εναλλάσσει το popover ενός στοιχείου. Επιστρέφει στον καλούντα πριν εμφανιστεί ή κρυφτεί πραγματικά το popover (δηλαδή πριν συμβεί το shown.bs.popover
ή το hidden.bs.popover
συμβάν). Αυτό θεωρείται μια «χειροκίνητη» ενεργοποίηση του popover.
$('#element').popover('toggle')
.popover('dispose')
Κρύβει και καταστρέφει το popover ενός στοιχείου. Τα popover που χρησιμοποιούν ανάθεση (τα οποία δημιουργούνται χρησιμοποιώντας την selector
επιλογή ) δεν μπορούν να καταστραφούν μεμονωμένα στα στοιχεία ενεργοποίησης καταγωγής.
$('#element').popover('dispose')
.popover('enable')
Δίνει στο popover ενός στοιχείου τη δυνατότητα να εμφανίζεται. Τα popover είναι ενεργοποιημένα από προεπιλογή.
$('#element').popover('enable')
.popover('disable')
Καταργεί τη δυνατότητα εμφάνισης του popover ενός στοιχείου. Το popover θα μπορεί να εμφανιστεί μόνο εάν ενεργοποιηθεί ξανά.
$('#element').popover('disable')
.popover('toggleEnabled')
Εναλλάσσει τη δυνατότητα εμφάνισης ή απόκρυψης του popover ενός στοιχείου.
$('#element').popover('toggleEnabled')
.popover('update')
Ενημερώνει τη θέση του popover ενός στοιχείου.
$('#element').popover('update')
Εκδηλώσεις
Τύπος συμβάντος | Περιγραφή |
---|---|
show.bs.popover | Αυτό το συμβάν ενεργοποιείται αμέσως όταν show καλείται η μέθοδος παρουσίας. |
δεικνύεται.βς.popover | Αυτό το συμβάν ενεργοποιείται όταν το popover έχει γίνει ορατό στον χρήστη (θα περιμένει να ολοκληρωθούν οι μεταβάσεις CSS). |
απόκρυψη.μπς.popover | Αυτό το συμβάν ενεργοποιείται αμέσως μετά την hide κλήση της μεθόδου παρουσίας. |
κρυφός.β.ποποβερ | Αυτό το συμβάν ενεργοποιείται όταν ολοκληρωθεί η απόκρυψη του popover από τον χρήστη (θα περιμένει να ολοκληρωθούν οι μεταβάσεις CSS). |
εισήχθη.μπς.popover | Αυτό το συμβάν ενεργοποιείται μετά το show.bs.popover συμβάν όταν το πρότυπο popover έχει προστεθεί στο DOM. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something...
})