โซลูชันทั้งสองนี้ต้องการเพียงสององค์ประกอบที่ซ้อนกัน
อันดับแรก - การวางตำแหน่งสัมพัทธ์และสัมบูรณ์หากเนื้อหาคงที่ (ศูนย์ด้วยตนเอง)
.black {
position:relative;
min-height:500px;
background:rgba(0,0,0,.5);
}
.message {
position:absolute;
margin: 0 auto;
width: 180px;
top: 45%; bottom:45%; left: 0%; right: 0%;
}
https://jsfiddle.net/GlupiJas/5mv3j171/
หรือสำหรับการออกแบบที่ลื่นไหล - สำหรับศูนย์เนื้อหาที่แน่นอนให้ใช้ตัวอย่างด้านล่างแทน:
.message {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
https://jsfiddle.net/GlupiJas/w3jnjuv0/
คุณต้องตั้งค่า "ความสูงต่ำสุด" ในกรณีที่เนื้อหาเกิน 50% ของความสูงของหน้าต่าง คุณยังสามารถปรับความสูงนี้ด้วยคิวรีสื่อสำหรับอุปกรณ์มือถือและแท็บเล็ต แต่ถ้าคุณเล่นด้วยการออกแบบที่ตอบสนอง
ฉันเดาว่าคุณสามารถไปได้ไกลกว่านี้และใช้สคริปต์ JavaScript / JQuery อย่างง่ายเพื่อจัดการความสูงต่ำสุดหรือความสูงคงที่หากมีความจำเป็นด้วยเหตุผลบางประการ
ประการที่สอง - หากเนื้อหาเป็นของเหลวคุณยังสามารถใช้คุณสมบัติ css ของตารางและเซลล์ตารางที่มีการจัดตำแหน่งแนวตั้งและจัดข้อความให้อยู่กึ่งกลาง:
/*in a wrapper*/
display:table;
และ
/*in the element inside the wrapper*/
display:table-cell;
vertical-align: middle;
text-align: center;
ทำงานและปรับขนาดได้อย่างสมบูรณ์แบบมักใช้เป็นโซลูชันการออกแบบเว็บที่ตอบสนองด้วยเค้าโครงตารางและคิวรีสื่อที่ปรับเปลี่ยนความกว้างของวัตถุ
.black {
display:table;
height:500px;
width:100%;
background:rgba(0,0,0,.5);
}
.message {
display:table-cell;
vertical-align: middle;
text-align: center;
}
https://jsfiddle.net/GlupiJas/4daf2v36/
ฉันชอบโซลูชันตารางสำหรับการจัดตำแหน่งเนื้อหาที่แน่นอน แต่ในบางกรณีการวางตำแหน่งสัมบูรณ์แบบสัมพัทธ์จะทำงานได้ดีกว่าโดยเฉพาะอย่างยิ่งหากเราไม่ต้องการคงสัดส่วนการจัดแนวเนื้อหาที่แน่นอน