5.2 Η ιδιότητα Horizontal και Vertical Align στην CSS

Στην CSS, μπορούμε να χρησιμοποιήσουμε τις ιδιότητες text-align και vertical-align για τον οριζόντιο και κατακόρυφο στοίχισμα στοιχείων.

Για οριζόντιο στοίχισμα, χρησιμοποιούμε την ιδιότητα text-align. Παραδείγματα:

.container {
  text-align: center; /* Κεντράρισμα του περιεχομένου */
}

.item {
  text-align: right; /* Δεξιό στοίχισμα του στοιχείου */
}

Για κατακόρυφο στοίχισμα, χρησιμοποιούμε την ιδιότητα vertical-align. Αυτή η ιδιότητα έχει διαφορετική συμπεριφορά, ανάλογα με τον τύπο των στοιχείων που τη χρησιμοποιούμε. Για στοιχεία εντός ενός γραμμικού κειμένου, η vertical-align δεν επηρεάζει τον κατακόρυφο στοίχισμα. Ωστόσο, μπορούμε να τη χρησιμοποιήσουμε για στοιχεία τύπου table-cell ή inline-block για την ευθυγράμμιση σε μια γραμμή. Παραδείγματα:

.container {
  display: table-cell;
  vertical-align: middle; /* Κεντράρισμα κατακόρυφα του στοιχείου */
}

.item {
  display: inline-block;
  vertical-align: top; /* Πάνω στοίχισμα του στοιχείου */
}

Αυτές οι ιδιότητες μπορούν να χρησιμοποιηθούν σε συνδυασμό με άλλες ιδιότητες CSS για να επιτευχθεί το επιθυμητό στοίχισμα των στοιχείων στη σελίδα.

Για να κεντράρετε οριζόντια ένα block στοιχείο (όπως ένα <div>), χρησιμοποιήστε τον κανόνα margin: auto;.

Ορίζοντας το πλάτος του στοιχείου, θα το εμποδίσετε να επεκταθεί μέχρι τις άκρες του περιέκτη του.

Το στοιχείο θα πάρει το καθορισμένο πλάτος και το υπόλοιπο κενό χώρο θα διαιρεθεί ισόποσα μεταξύ των δύο περιθωρίων:

.centered {
  width: 300px;
  margin: auto;
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered θα έχει πλάτος 300 pixels και θα εμφανιστεί κεντραρισμένο οριζόντια στη σελίδα.

Αν θέλετε να κεντράρετε και κατακόρυφα το block στοιχείο, μπορείτε να χρησιμοποιήσετε την ιδιότητα text-align: center; στον περιέκτη του:

.container {
  text-align: center;
}

.centered {
  width: 300px;
  margin: auto;
}

Με αυτόν τον τρόπο, το στοιχείο .centered θα είναι τόσο οριζόντια όσο και κατακόρυφα κεντραρισμένο μέσα στον περιέκτη .container.

Για να κεντράρετε μόνο το κείμενο μέσα σε ένα στοιχείο, χρησιμοποιήστε τον κανόνα text-align: center;.

.centered-text {
  text-align: center;
}

Στο παραπάνω παράδειγμα, το κείμενο εντός των στοιχείων με την κλάση .centered-text θα εμφανίζεται κεντραρισμένο οριζόντια στο εσωτερικό τους.

[adinserter block=”2″]

Για να κεντράρετε μια εικόνα, ορίστε το αριστερό και δεξί περιθώριο (margin) σε auto και μετατρέψτε την σε ένα block στοιχείο:

.centered-image {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

Στο παραπάνω παράδειγμα, η εικόνα με την κλάση .centered-image θα είναι κεντραρισμένη οριζόντια μέσα στον περιέκτη της, καθώς το αριστερό και δεξί περιθώριο θα αυτορυθμίζονται αυτόματα για να επιτευχθεί το κεντράρισμα.

Ένας τρόπος για το στοίχισμα στοιχείων είναι να χρησιμοποιήσετε την ιδιότητα position: absolute;. Αυτή η ιδιότητα σας επιτρέπει να τοποθετήσετε ένα στοιχείο σε συγκεκριμένη θέση εντός του γονικού στοιχείου.

Για να αλιεύσετε ένα στοιχείο στα αριστερά, μπορείτε να χρησιμοποιήσετε τις ιδιότητες left: 0; και right: auto;. Αντίστοιχα, για να αλιεύσετε ένα στοιχείο στα δεξιά, μπορείτε να χρησιμοποιήσετε τις ιδιότητες left: auto; και right: 0;.

Παράδειγμα:

.left-aligned {
  position: absolute;
  left: 0;
  right: auto;
}

.right-aligned {
  position: absolute;
  left: auto;
  right: 0;
}

Στο παραπάνω παράδειγμα, τα στοιχεία με τις κλάσεις .left-aligned και .right-aligned θα αλιεύονται στα αριστερά και δεξιά αντίστοιχα, εντός του γονικού στοιχείου.

Ένας άλλος τρόπος για το στοίχισμα στοιχείων είναι να χρησιμοποιήσετε την ιδιότητα float. Η ιδιότητα αυτή επιτρέπει να τοποθετήσετε ένα στοιχείο στα αριστερά ή στα δεξιά του γονικού στοιχείου.

Για να αλιεύσετε ένα στοιχείο στα αριστερά, μπορείτε να χρησιμοποιήσετε την ιδιότητα float: left;. Αντίστοιχα, για να αλιεύσετε ένα στοιχείο στα δεξιά, μπορείτε να χρησιμοποιήσετε την ιδιότητα float: right;.

Παράδειγμα:

.left-aligned {
  float: left;
}

.right-aligned {
  float: right;
}

Στο παραπάνω παράδειγμα, τα στοιχεία με τις κλάσεις .left-aligned και .right-aligned θα αλιεύονται στα αριστερά και δεξιά αντίστοιχα, εντός του γονικού στοιχείου. Τα υπόλοιπα στοιχεία θα τοποθετηθούν δίπλα τους, στην αντίστοιχη πλευρά.

Το clearfix hack είναι μια τεχνική που χρησιμοποιείται για να διορθώσει το πρόβλημα όταν ένα στοιχείο με εφαπτόμενα (floated) παιδιά δεν “καθαρίζει” σωστά και ορατοποιείται κάτω από αυτά. Το clearfix hack επιλύει αυτό το πρόβλημα εισάγοντας ένα στοιχείο καθαρισμού (clearfix element) με κατάλληλους κανόνες CSS.

Ένα απλό παράδειγμα clearfix hack είναι το εξής:

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

Στο παραπάνω παράδειγμα, δημιουργείται ένα ψευδο-στοιχείο (::after) με κενό περιεχόμενο (content: "") και χρησιμοποιείται η ιδιότητα display: table; για να δημιουργηθεί ένα καινούργιο φορματοποιημένο block formatting context. Ο κανόνας clear: both; εξασφαλίζει ότι το clearfix element “καθαρίζει” και εμφανίζεται κάτω από τα εφαπτόμενα παιδιά.

[adinserter block=”3″]

Για να χρησιμοποιήσετε το clearfix hack, πρέπει να προσθέσετε την κλάση .clearfix στο γονικό στοιχείο που περιέχει τα εφαπτόμενα παιδιά:

<div class="clearfix">
  <!-- Εφαπτόμενα παιδιά εδώ -->
</div>

Με το clearfix hack, μπορείτε να διασφαλίσετε ότι το γονικό στοιχείο θα περικλείει σωστά τα έφαπτόμενα παιδιά και θα εμφανίζεται σωστά στη σελίδα.

Για να κεντράρετε κατακόρυφα ένα στοιχείο στο CSS, μια απλή λύση είναι να χρησιμοποιήσετε παραπάνω και κάτω padding. Αυτό μπορεί να επιτευχθεί δίνοντας ίσο πάνω και κάτω padding στο στοιχείο.

Παράδειγμα:

.centered {
  padding-top: 50px;
  padding-bottom: 50px;
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered θα έχει 50 pixels πάνω και 50 pixels κάτω padding, που θα το κεντράρει κατακόρυφα.

Μπορείτε να προσαρμόσετε την τιμή του padding ανάλογα με τις απαιτήσεις σας για το πλάτος του κεντραρισμένου στοιχείου.

Για να κεντράρετε τόσο οριζόντια όσο και κατακόρυφα ένα στοιχείο, μπορείτε να χρησιμοποιήσετε τόσο padding όσο και την ιδιότητα text-align: center.

Παράδειγμα:

.centered {
  padding: 50px;
  text-align: center;
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered θα έχει 50 pixels padding σε όλες τις πλευρές, που θα το κεντράρει τόσο οριζόντια όσο και κατακόρυφα. Επιπλέον, η ιδιότητα text-align: center θα ευθυγραμμίσει το κείμενο μέσα στο στοιχείο στο κέντρο.

Μπορείτε να προσαρμόσετε την τιμή του padding ανάλογα με τις απαιτήσεις σας για το μέγεθος του κεντραρισμένου στοιχείου.

Ένα άλλο κόλπο που μπορείτε να χρησιμοποιήσετε για να κεντράρετε κατακόρυφα ένα στοιχείο είναι να χρησιμοποιήσετε την ιδιότητα line-height με μια τιμή ίση με την ιδιότητα height του στοιχείου.

Παράδειγμα:

.centered {
  height: 200px;
  line-height: 200px;
  text-align: center;
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered έχει ύψος 200 pixels και η ιδιότητα line-height ορίζεται σε 200 pixels. Αυτό καθιστά το κείμενο μέσα στο στοιχείο να ευθυγραμμίζεται κατακόρυφα στο κέντρο του στοιχείου.

[adinserter block=”4″]

Μην ξεχάσετε επίσης να χρησιμοποιήσετε την ιδιότητα text-align: center για να κεντράρετε οριζόντια το κείμενο μέσα στο στοιχείο.

Εάν οι λύσεις με padding και line-height δεν είναι εφικτές, μια άλλη λύση είναι να χρησιμοποιήσετε την θέση (positioning) και την ιδιότητα transform.

Παράδειγμα:

.centered {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered έχει οριστεί με θέση relative, ενώ οι ιδιότητες top και transform χρησιμοποιούνται για να κεντράρουν το στοιχείο κατακόρυφα.

Η τιμή του top ορίζει το ποσοστό του ύψους του στοιχείου από την κορυφή του γονικού στοιχείου. Στο παράδειγμα, το στοιχείο μετακινείται κατά το 50% του ύψους του προς τα κάτω.

Η ιδιότητα transform με την τιμή translateY(-50%) μετακινεί το στοιχείο κατά το 50% του εαυτού του προς τα πάνω. Αυτό επανορθώνει τη μετακίνηση που έγινε με την ιδιότητα top και καταφέρνει να κεντράρει το στοιχείο κατακόρυφα.

Αυτή η λύση είναι χρήσιμη όταν δεν είναι δυνατό να χρησιμοποιήσετε τις προηγούμενες μεθόδους ή όταν θέλετε να κεντράρετε δυναμικά μεταβαλλόμενο περιεχόμενο κατακόρυφα.

Εάν οι λύσεις με padding και line-height δεν είναι εφικτές, μια άλλη λύση είναι να χρησιμοποιήσετε την θέση (positioning) και την ιδιότητα transform.

Παράδειγμα:

.centered {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

Στο παραπάνω παράδειγμα, το στοιχείο με την κλάση .centered έχει οριστεί με θέση relative, ενώ οι ιδιότητες top και transform χρησιμοποιούνται για να κεντράρουν το στοιχείο κατακόρυφα.

Η τιμή του top ορίζει το ποσοστό του ύψους του στοιχείου από την κορυφή του γονικού στοιχείου. Στο παράδειγμα, το στοιχείο μετακινείται κατά το 50% του ύψους του προς τα κάτω.

Η ιδιότητα transform με την τιμή translateY(-50%) μετακινεί το στοιχείο κατά το 50% του εαυτού του προς τα πάνω. Αυτό επανορθώνει τη μετακίνηση που έγινε με την ιδιότητα top και καταφέρνει να κεντράρει το στοιχείο κατακόρυφα.

Αυτή η λύση είναι χρήσιμη όταν δεν είναι δυνατό να χρησιμοποιήσετε τις προηγούμενες μεθόδους ή όταν θέλετε να κεντράρετε δυναμικά μεταβαλλόμενο περιεχόμενο κατακόρυφα.

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων