Επικάλυψη Στοιχείων CSS Grid
Στο σύστημα grid προβλέπεται η δυνατότητα
επικάλυψης ορισμένων στοιχείων πάνω σε άλλα όταν
τέμνονται περιοχές του grid ή όταν ορίζονται
αρνητικά εξωτερικά περιθώρια.
Η επικάλυψη μπορεί να συμβαίνει από προεπιλογή,
αλλά επίσης για κάθε στοιχείο μπορεί να οριστεί σε μια συγκεκριμένη σειρά
μέσω των ιδιοτήτων z-index και order,
καθώς και του συνδυασμού τους.
Επικάλυψη στοιχείων στο grid από προεπιλογή
Ας υποθέσουμε ότι έχουμε έναν πίνακα, στον οποίο τα στοιχεία επικαλύπτονται το ένα το άλλο:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
grid-column: 1 / 4;
grid-row: 1 / 5;
}
#elem2 {
background-color: orange;
grid-column: 2 / 5;
grid-row: 3 / 6;
}
#elem3 {
background-color: green;
grid-column: 3 / 6;
grid-row: 2 / 4;
}
:
Αλλαγή της σειράς επικάλυψης στοιχείων με την ιδιότητα order
Τώρα ας εφαρμόσουμε την ιδιότητα order,
ορίζοντάς την σε κάθε θυγατρικό στοιχείο:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
grid-column: 1 / 4;
grid-row: 1 / 5;
order: 3;
}
#elem2 {
background-color: orange;
grid-column: 2 / 5;
grid-row: 3 / 6;
order: 2;
}
#elem3 {
background-color: green;
grid-column: 3 / 6;
grid-row: 2 / 4;
order: 1;
}
:
Σειρά επικάλυψης στοιχείων με την ιδιότητα z-index
Τώρα ας εφαρμόσουμε την ιδιότητα z-index,
η οποία επιτρέπει την ρύθμιση της σειράς
τοποθέτησης στοιχείων κατά μήκος του z-άξονα:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
grid-column: 1 / 4;
grid-row: 1 / 5;
z-index: 1;
}
#elem2 {
background-color: orange;
grid-column: 2 / 5;
grid-row: 3 / 6;
z-index: 3;
}
#elem3 {
background-color: green;
grid-column: 3 / 6;
grid-row: 2 / 4;
z-index: 2;
}
:
Όπως φαίνεται από το αποτέλεσμα,
η υψηλότερη τιμή της ιδιότητας z-index
τοποθετεί το στοιχείο πάνω από άλλα
στοιχεία με χαμηλότερες τιμές.
Συνδυασμός επικάλυψης στοιχείων με τις ιδιότητες order και z-index
Εάν αλλάξαμε τη σειρά για τα στοιχεία
με το z-index και το order, τότε
η προτεραιότητα παραμένει στο z-index.
Χάρη σε αυτό, μπορούμε να αλλάξουμε τη σειρά των στοιχείων,
αλλά ταυτόχρονα να μην χάσουμε τον έλεγχο της επικάλυψής τους:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
grid-column: 1 / 4;
grid-row: 1 / 5;
order: 3;
z-index: 1;
}
#elem2 {
background-color: orange;
grid-column: 2 / 5;
grid-row: 3 / 6;
order: 1;
z-index: 2;
}
#elem3 {
background-color: green;
grid-column: 3 / 6;
grid-row: 2 / 4;
order: 1;
z-index: 3;
}
:
Πρακτικές Ασκήσεις
Ας υποθέσουμε ότι στο grid μας υπάρχουν τέσσερα στοιχεία:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
}
#elem2 {
background-color: orange;
}
#elem3 {
background-color: green;
}
#elem4 {
background-color: lightblue;
}
Τοποθετήστε όλα τα στοιχεία
σύμφωνα με το ακόλουθο παράδειγμα,
χρησιμοποιώντας την ιδιότητα order:
Και τώρα για την λύση της προηγούμενης άσκησης
εφαρμόστε την ιδιότητα z-index.
Ας υποθέσουμε ότι στο grid μας υπάρχουν τέσσερα στοιχεία:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
display: grid;
grid: repeat(6, 1fr) / repeat(6, 1fr);
border: 2px solid #696989;
padding: 10px;
width: 400px;
height: 300px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
background-color: pink;
}
#elem2 {
background-color: orange;
}
#elem3 {
background-color: green;
}
#elem4 {
background-color: lightblue;
}
Τοποθετήστε όλα τα στοιχεία
σύμφωνα με το ακόλουθο παράδειγμα,
χρησιμοποιώντας την ιδιότητα order:
Και τώρα για την λύση της προηγούμενης άσκησης
εφαρμόστε την ιδιότητα z-index.