การซ้อนทับขององค์ประกอบ CSS 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