Περισσότερα
Πώς να κεντράρετε κάθετα ένα δοχείο στο Bootstrap;
Ψάχνω για έναν τρόπο να κεντράρω κάθετα το div container
μέσα στο jumbotron
και να το τοποθετήσω στη μέση της σελίδας.
Το .jumbotron
πρέπει να προσαρμοστεί σε όλο το ύψος και το πλάτος της οθόνης. Το div .container
έχει πλάτος 1025px
και πρέπει να βρίσκεται στο κέντρο της σελίδας (κάθετα στο κέντρο).
Θέλω αυτή η σελίδα να έχει το jumbotron προσαρμοσμένο στο ύψος και το πλάτος της οθόνης μαζί με το container κάθετα στο κέντρο του jumbotron. Πώς μπορώ να το επιτύχω;
314
3
Ο τρόπος του ευέλικτου κουτιού
Η κάθετη ευθυγράμμιση είναι τώρα πολύ απλή με τη χρήση του Flexible box layout. Σήμερα, αυτή η μέθοδος υποστηρίζεται σε ένα ευρύ φάσμα των φυλλομετρητών ιστού εκτός από τον Internet Explorer 8 & 9. Ως εκ τούτου, θα πρέπει να χρησιμοποιήσουμε κάποια hacks/polyfills ή διαφορετικές προσεγγίσεις για τον IE8/9.
Στη συνέχεια θα σας δείξω πώς να το κάνετε αυτό σε μόνο 3 γραμμές κειμένου (ανεξάρτητα από την παλιά σύνταξη flexbox).
Σημείωση: είναι καλύτερα να χρησιμοποιήσετε μια πρόσθετη κλάση αντί να αλλάξετε την
.jumbotron
για να επιτύχετε την κάθετη στοίχιση. Θα χρησιμοποιούσα για παράδειγμα το όνομα της κλάσηςvertical-center
.[Παράδειγμα εδώ][5] (Ένα Καθρέφτης στο jsbin).
Σημαντικές σημειώσεις (Εξετάζεται στο demo):
Μια ποσοστιαία τιμή των ιδιοτήτων
height
ήmin-height
είναι σχετική με τοheight
του γονικού στοιχείου, επομένως θα πρέπει να καθορίσετε ρητά τοheight
του γονέα.Η σύνταξη του προμηθευτή με πρόθεμα / παλιό flexbox παραλείπεται στο αναρτημένο απόσπασμα λόγω συντομίας, αλλά υπάρχει στο online παράδειγμα.
Σε ορισμένα από τα παλιά προγράμματα περιήγησης ιστού, όπως ο Firefox 9 (στον οποίο έχω δοκιμάσει), το δοχείο flex -
.vertical-center
σε αυτή την περίπτωση - δεν θα καταλάβει τον διαθέσιμο χώρο μέσα στο γονέα, επομένως πρέπει να καθορίσουμε την ιδιότηταwidth
όπως:Πλάτος: 100%
.Επίσης, σε ορισμένα από τα προγράμματα περιήγησης ιστού, όπως αναφέρθηκε παραπάνω, το στοιχείο flex -
.container
σε αυτή την περίπτωση - μπορεί να μην εμφανίζεται στο κέντρο οριζόντια. Φαίνεται ότι το εφαρμοζόμενο αριστερό/δεξιόmargin
τουauto
δεν έχει καμία επίδραση στο στοιχείο flex.Επομένως, πρέπει να το ευθυγραμμίσουμε με το
box-pack / justify-content
.Για περισσότερες λεπτομέρειες ή/και την κάθετη στοίχιση των στηλών, μπορείτε να ανατρέξετε στο παρακάτω θέμα:
Ο παραδοσιακός τρόπος για παλαιούς φυλλομετρητές ιστού
Αυτή είναι η παλιά απάντηση που έγραψα την εποχή που απάντησα σε αυτή την ερώτηση. Αυτή η μέθοδος έχει συζητηθεί εδώ και υποτίθεται ότι λειτουργεί και στον Internet Explorer 8 και 9. Θα την εξηγήσω εν συντομία:
Στη ροή inline, ένα στοιχείο επιπέδου inline μπορεί να ευθυγραμμιστεί κάθετα στη μέση με τη δήλωση
vertical-align: middle
. Προδιαγραφές από το W3C:Στις περιπτώσεις που ο γονέας - το στοιχείο
.vertical-center
στην προκειμένη περίπτωση - έχει ρητόheight
, κατά πάσα πιθανότητα αν μπορούσαμε να έχουμε ένα στοιχείο-παιδί που να έχει ακριβώς το ίδιοheight
του γονέα, θα μπορούσαμε να μετακινήσουμε τη βασική γραμμή του γονέα στο μέσο του πλήρους ύψους παιδιού και εκπληκτικά να κάνουμε το επιθυμητό παιδί μας μέσα στη ροή - το.container
- να ευθυγραμμιστεί στο κέντρο κάθετα.Όλα μαζί
Τούτου λεχθέντος, θα μπορούσαμε να δημιουργήσουμε ένα στοιχείο πλήρους ύψους μέσα στο
.vertical-center
με ψευδοστοιχεία::before
ή::after
και επίσης να αλλάξουμε τον προεπιλεγμένο τύποdisplay
αυτού και του άλλου παιδιού, του.container
σεinline-block
.Στη συνέχεια, χρησιμοποιήστε
vertical-align: middle;
για να ευθυγραμμίσετε τα inline στοιχεία κάθετα.Ορίστε:
WORKING DEMO.
Επίσης, για να αποφύγετε απροσδόκητα προβλήματα σε πολύ μικρές οθόνες, μπορείτε να επαναφέρετε το ύψος του ψευδο-στοιχείου σε
auto
ή0
ή να αλλάξετε τον τύποdisplay
σεnone
αν χρειαστεί:ΕΝΗΜΕΡΩΜΈΝΟ DEMO
Και κάτι ακόμα:
και προσθέστε μια υψηλότερη τιμή
z-index
(για διασφάλιση) για να τα κρατάτε πάντα στην κορυφή των άλλων.προσθέστε το Bootstrap.css και στη συνέχεια προσθέστε αυτό στο css σας
Η προτιμώμενη τεχνική μου :
Demo