Επικάλυψη Στοιχείων CSS Grid

Στο σύστημα grid προβλέπεται η δυνατότητα επικάλυψης ορισμένων στοιχείων πάνω σε άλλα όταν τέμνονται περιοχές του grid ή όταν ορίζονται αρνητικά εξωτερικά περιθώρια. Η επικάλυψη μπορεί να συμβαίνει από προεπιλογή, αλλά επίσης για κάθε στοιχείο μπορεί να οριστεί σε μια συγκεκριμένη σειρά μέσω των ιδιοτήτων z-index και order, καθώς και του συνδυασμού τους.

Επικάλυψη στοιχείων στο grid από προεπιλογή

Ας υποθέσουμε ότι έχουμε έναν πίνακα, στον οποίο τα στοιχεία επικαλύπτονται το ένα το άλλο:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#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, ορίζοντάς την σε κάθε θυγατρικό στοιχείο:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#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-άξονα:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#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. Χάρη σε αυτό, μπορούμε να αλλάξουμε τη σειρά των στοιχείων, αλλά ταυτόχρονα να μην χάσουμε τον έλεγχο της επικάλυψής τους:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#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;
}

Результат:

Πρακτικές Ασκήσεις

Задание 1

Ας υποθέσουμε ότι στο grid μας υπάρχουν τέσσερα στοιχεία:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#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:

Задание 2

Και τώρα για την λύση της προηγούμενης άσκησης εφαρμόστε την ιδιότητα z-index.

Задание 3

Ας υποθέσουμε ότι στο grid μας υπάρχουν τέσσερα στοιχεία:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#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:

Задание 4

Και τώρα για την λύση της προηγούμενης άσκησης εφαρμόστε την ιδιότητα z-index.