แทนการใช้การใช้งานalign-self: center
align-items: center
ไม่จำเป็นต้องมีการเปลี่ยนแปลงไม่ได้หรือการใช้งานflex-direction
text-align
นี่คือรหัสของคุณซึ่งมีการปรับค่าเดียวเพื่อให้การทำงานทั้งหมด:
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; <---- REMOVE */
align-items: center; /* <---- NEW */
background: silver;
width: 100%;
height: 20%;
}
align-self
คุณสมบัตินำไปใช้กับรายการดิ้น ยกเว้นรายการของคุณli
ไม่ใช่รายการยืดหยุ่นเนื่องจากรายการหลัก - รายการul
- ไม่มีdisplay: flex
หรือdisplay: inline-flex
ใช้
ดังนั้น, ul
ไม่ใช่คอนเทนเนอร์แบบยืดหยุ่น, li
ไม่ใช่รายการ flex, และalign-self
ไม่มีผลกระทบ
align-items
คุณสมบัติคล้ายกับการalign-self
ยกเว้นนำไปใช้กับภาชนะบรรจุดิ้น
เนื่องจากli
เป็นคอนเทนเนอร์แบบยืดหยุ่นจึงalign-items
สามารถใช้เพื่อจัดองค์ประกอบของลูกให้อยู่ตรงกลาง
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; */
align-items: center;
background: silver;
width: 100%;
height: 20%;
}
<ul>
<li>This is the text</li>
</ul>
การสาธิต codepen
ในทางเทคนิคนี่คือวิธีการalign-items
และการalign-self
ทำงาน ...
align-items
คุณสมบัติ (บนบรรจุภัณฑ์) กำหนดค่าเริ่มต้นของalign-self
(ในรายการ) ดังนั้นวิธีการดิ้นรายการทั้งหมดจะถูกตั้งค่าalign-items: center
align-self: center
แต่คุณสามารถลบล้างค่าเริ่มต้นนี้ได้โดยปรับalign-self
รายการแต่ละรายการ
align-items: stretch
ตัวอย่างเช่นคุณอาจต้องการคอลัมน์ความสูงเท่ากันดังนั้นภาชนะที่มีการตั้งค่า align-self: flex-start
แต่หนึ่งในรายการจะต้องตรึงไปด้านบนจึงมีการตั้งค่า
ตัวอย่าง
ข้อความเป็นรายการที่ยืดหยุ่นอย่างไร
บางคนอาจสงสัยว่าข้อความวิ่งเป็นอย่างไร ...
<li>This is the text</li>
li
เป็นองค์ประกอบลูกของ
เหตุผลคือข้อความที่ไม่ได้ถูกห่ออย่างชัดเจนโดยองค์ประกอบระดับอินไลน์ถูกห่อหุ้มแบบอัลกอริทึมโดยกล่องแบบอินไลน์ สิ่งนี้ทำให้มันเป็นองค์ประกอบอินไลน์แบบไม่ระบุชื่อและลูกของผู้ปกครอง
จากข้อมูลจำเพาะ CSS:
9.2.2.1 กล่องแบบอินไลน์ที่ไม่ระบุชื่อ
ข้อความใด ๆ ที่มีอยู่ในองค์ประกอบคอนเทนเนอร์บล็อกโดยตรงจะต้องถือว่าเป็นองค์ประกอบแบบอินไลน์ที่ไม่ระบุชื่อ
ข้อกำหนดคุณสมบัติ flexbox จัดให้มีลักษณะการทำงานที่คล้ายกัน
4. รายการที่ยืดหยุ่น
ชายด์แบบ in-flow แต่ละตัวของ flex container จะกลายเป็นไอเท็ม flex และแต่ละข้อความที่ต่อเนื่องที่อยู่ภายใน flex container จะถูกห่อด้วยไอเท็ม flex แบบไม่ระบุชื่อ
ดังนั้นข้อความในli
รายการยืดหยุ่น
align-items: baseline
ผมชอบ เหมาะสำหรับความสูงที่แตกต่างกันซึ่งมาจากตัวอักษร Unicode ที่แตกต่างกันเป็นต้น