ติดตามเทคนิคการจัดกึ่งกลาง 5 แบบขณะที่เทคนิคเหล่านี้ผ่านการทดสอบหลายชุดเพื่อดูว่าเทคนิคใดที่ปรับตัวต่อการเปลี่ยนแปลงได้ดีที่สุด
การจัดกึ่งกลางใน CSS เป็นความท้าทายที่ขึ้นชื่อลือชา ซึ่งเต็มไปด้วยมุกตลกและการเยาะเย้ย 2020 CSS เติบโตขึ้นมากแล้ว ตอนนี้เราหัวเราะกับมุกตลกเหล่านั้นได้อย่างจริงใจ ไม่ใช่หัวเราะ ทั้งที่กัดฟัน
หากต้องการดูวิดีโอ โปรดดูโพสต์นี้ใน YouTube
ความท้าทาย
การจัดกึ่งกลางมีหลายประเภท จากกรณีการใช้งานที่แตกต่างกัน จำนวนสิ่งต่างๆ ที่ต้องจัดกึ่งกลาง ฯลฯ เพื่อแสดงเหตุผลเบื้องหลังเทคนิคการจัดกึ่งกลางที่ "ประสบความสำเร็จ" ฉันจึง สร้าง The Resilience Ringer ขึ้นมา ซึ่งเป็นการทดสอบความเครียดหลายครั้งสำหรับกลยุทธ์การจัดกึ่งกลางแต่ละกลยุทธ์เพื่อสร้างสมดุลภายในและให้คุณสังเกตประสิทธิภาพของกลยุทธ์เหล่านั้น และในตอนท้าย ผมจะเปิดเผยเทคนิคการทำคะแนนสูงสุด รวมถึงเทคนิคที่ "มีคุณค่ามากที่สุด" หวังว่าคุณจะได้รับเทคนิคและโซลูชันการจัดกึ่งกลางใหม่ๆ
The Resilience Ringer
Resilience Ringer เป็นตัวแทนความเชื่อของฉันที่ว่ากลยุทธ์การจัดกึ่งกลางควรมีความยืดหยุ่นต่อเลย์เอาต์ระหว่างประเทศ วิวพอร์ตที่มีขนาดแตกต่างกัน การแก้ไขข้อความ และเนื้อหาแบบไดนามิก หลักการเหล่านี้ช่วยกำหนดการทดสอบความยืดหยุ่นต่อไปนี้สำหรับ เทคนิคการจัดกึ่งกลางเพื่อให้คงอยู่ได้
- บีบ: การจัดกึ่งกลางควรจัดการการเปลี่ยนแปลงความกว้างได้
- แก้ไขแล้ว: การจัดกึ่งกลางควรจัดการการเปลี่ยนแปลงความสูงได้
- ซ้ำกัน: การจัดกึ่งกลางควรเป็นแบบไดนามิกตามจำนวนรายการ
- แก้ไข: การจัดกึ่งกลางควรปรับเปลี่ยนตามความยาวและภาษาของเนื้อหา
- Flow: การจัดกึ่งกลางควรไม่ขึ้นอยู่กับทิศทางของเอกสารและโหมดการเขียน
โซลูชันที่ชนะควรแสดงให้เห็นถึงความยืดหยุ่นด้วยการรักษาเนื้อหาไว้ตรงกลางขณะที่ถูกบีบ อัดซ้ำ แก้ไข และสลับไปยังโหมดและทิศทางภาษาต่างๆ ศูนย์ที่เชื่อถือได้และยืดหยุ่น ซึ่งเป็นศูนย์ที่ปลอดภัย
คำอธิบาย
เราได้ให้คำแนะนำเกี่ยวกับสีแบบภาพเพื่อช่วยให้คุณเก็บข้อมูลเมตาบางอย่างไว้ในบริบท

- เส้นขอบสีชมพูแสดงความเป็นเจ้าของการจัดรูปแบบการจัดกึ่งกลาง
- กรอบสีเทาคือพื้นหลังในคอนเทนเนอร์ที่ต้องการให้รายการอยู่ตรงกลาง
- โดยแต่ละองค์ประกอบย่อยจะมีสีพื้นหลังเป็นสีขาวเพื่อให้คุณเห็นเอฟเฟกต์ที่ เทคนิคการจัดกึ่งกลางมีต่อขนาดกล่ององค์ประกอบย่อย (หากมี)
ผู้เข้าแข่งขันทั้ง 5 คน
เทคนิคการทำสมาธิ 5 อย่างจะเข้าสู่การแข่งขัน Resilience Ringer แต่จะมีเพียงเทคนิคเดียวเท่านั้นที่จะได้รับ Resilience Crown 👸
1. ศูนย์เนื้อหา
- Squish: เยี่ยม
- สควอช: ยอดเยี่ยม
- ทำซ้ำ: ยอดเยี่ยม
- แก้ไข: ยอดเยี่ยม
- Flow: ยอดเยี่ยม
display: grid
และplace-content
ย่อจะเอาชนะความกระชับได้ยาก เนื่องจากจัดกึ่งกลางและจัดข้อความให้ชิดขอบทั้ง 2 ด้านสำหรับข้อความทั้งหมดของเด็ก
จึงเป็นเทคนิคการจัดกึ่งกลางที่ยอดเยี่ยมสำหรับกลุ่มองค์ประกอบที่ต้องการให้อ่าน
.content-center {
display: grid;
place-content: center;
gap: 1ch;
}
- เนื้อหาจะอยู่ตรงกลางแม้ในพื้นที่จำกัดและมีการล้น
- การแก้ไขและการบำรุงรักษาการวางกึ่งกลางจะอยู่ในที่เดียว
- Gap รับประกันว่าn คนจะเว้นระยะห่างเท่ากัน
- Grid จะสร้างแถวโดยค่าเริ่มต้น
- องค์ประกอบย่อยที่กว้างที่สุด (
max-content
) จะกำหนดความกว้างสำหรับองค์ประกอบที่เหลือทั้งหมด เราจะ พูดถึงเรื่องนี้เพิ่มเติมในGentle Flex
เหมาะสำหรับเลย์เอาต์มาโครที่มีย่อหน้าและพาดหัว ต้นแบบ หรือ โดยทั่วไปคือสิ่งต่างๆ ที่ต้องจัดกึ่งกลางให้อ่านง่าย
2. Gentle Flex
- Squish: เยี่ยมเลย
- สควอช: ยอดเยี่ยม
- ทำซ้ำ: ยอดเยี่ยม
- แก้ไข: ยอดเยี่ยม
- Flow: ยอดเยี่ยม
Gentle Flex เป็นกลยุทธ์การจัดกึ่งกลางที่เท่านั้นที่แท้จริง โดยจะมีความนุ่มนวลเนื่องจาก
ไม่มีการเปลี่ยนแปลงขนาดกรอบของเด็กในระหว่างการ
จัดกึ่งกลาง ซึ่งแตกต่างจาก place-content: center
โดยจะวางซ้อนกัน จัดกึ่งกลาง และเว้นระยะห่างอย่างเบามือที่สุด
.gentle-flex {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1ch;
}
- จัดการเฉพาะการจัดแนว ทิศทาง และการกระจาย
- การแก้ไขและการบำรุงรักษาจะอยู่ในที่เดียว
- Gap รับประกันว่าn คนจะเว้นระยะห่างเท่ากัน
- บรรทัดของโค้ดส่วนใหญ่
เหมาะสำหรับเลย์เอาต์ทั้งแบบมาโครและไมโคร
3. Autobot
- บีบ: ดี
- สควอช: ดีมาก
- ซ้ำ: ดี
- แก้ไข: ยอดเยี่ยม
- Flow: ยอดเยี่ยม
คอนเทนเนอร์ตั้งค่าเป็น Flex โดยไม่มีสไตล์การจัดแนว ส่วนองค์ประกอบย่อยโดยตรง
จะจัดรูปแบบด้วยระยะขอบอัตโนมัติ การmargin: auto
ทำงานกับทุกด้านขององค์ประกอบmargin: auto
นั้นเป็นสิ่งที่น่าหวนรำลึกและยอดเยี่ยม
.autobot {
display: flex;
}
.autobot > * {
margin: auto;
}
- เคล็ดลับสนุกๆ
- แบบลวกๆ
- ผลลัพธ์ที่ดูแปลกเมื่อข้อความล้น
- การใช้การกระจายแทนช่องว่างหมายความว่าเลย์เอาต์อาจเกิดขึ้นเมื่อองค์ประกอบต่างๆ สัมผัสกัน
- การ "บังคับ" ให้เด็กอยู่ในตำแหน่งใดตำแหน่งหนึ่งดูเหมือนจะไม่ใช่แนวทางที่ดีที่สุดและอาจส่งผลให้ขนาดกล่องของเด็กเปลี่ยนแปลงไป
เหมาะสำหรับการจัดไอคอนหรือองค์ประกอบเสมือนให้อยู่ตรงกลาง
4. Fluffy Center
- บีบ: ไม่ดี
- สควอช: ไม่ดี
- ซ้ำ: ไม่ดี
- แก้ไข: ยอดเยี่ยม
- Flow: ยอดเยี่ยม (ตราบใดที่คุณใช้พร็อพเพอร์ตี้เชิงตรรกะ)
"ตรงกลางนุ่มๆ" เป็นตัวเลือกที่ฟังดูอร่อยที่สุดของเรา และเป็นเทคนิคการจัดกึ่งกลางเพียงอย่างเดียวที่องค์ประกอบ/ลูกเป็นเจ้าของทั้งหมด ดูขอบสีชมพูที่อยู่ด้านในของภาพเดี่ยว กันไหม
.fluffy-center {
padding: 10ch;
}
- ปกป้องเนื้อหา
- ปรมาณู
- การทดสอบทุกครั้งจะมีการใช้กลยุทธ์การจัดกึ่งกลางนี้อย่างลับๆ
- ช่องว่างของคำคือช่องว่าง
- ภาพลวงตาว่าไม่มีประโยชน์
- คอนเทนเนอร์และไอเทมมีขนาดไม่ตรงกัน ซึ่งเป็นเรื่องปกติเนื่องจากแต่ละรายการมีขนาดที่แน่นอน
เหมาะสำหรับการจัดกึ่งกลางคำหรือวลี แท็ก แถบ ปุ่ม ชิป และอื่นๆ
5. ป๊อปแอนด์พลอป
- บีบ: โอเค
- สควอช: โอเค
- ซ้ำ: ไม่ดี
- แก้ไข: ดี
- Flow: ดี
ซึ่งจะ "ผุดขึ้น" เนื่องจากตำแหน่งสัมบูรณ์จะทำให้องค์ประกอบหลุดออกจากโฟลว์ปกติ ส่วน "plop" ของชื่อมาจากตอนที่ฉันพบว่ามันมีประโยชน์มากที่สุด นั่นคือ การวางไว้เหนือสิ่งอื่นๆ ซึ่งเป็นเทคนิคการซ้อนทับแบบคลาสสิกและสะดวกที่อยู่ตรงกลาง ซึ่งมีความยืดหยุ่นและปรับเปลี่ยนได้ตามขนาดเนื้อหา บางครั้งคุณเพียงต้องการ วาง UI ไว้เหนือ UI อื่น
- มีประโยชน์
- เชื่อถือได้
- มีประโยชน์อย่างยิ่งเมื่อคุณต้องการ
- รหัสที่มีค่าเปอร์เซ็นต์เป็นลบ
- ต้องใช้
position: relative
เพื่อบังคับให้บล็อกมีคอนเทนเนอร์ - การขึ้นบรรทัดใหม่เร็วเกินไปและไม่เหมาะสม
- มีได้เพียง 1 รายการต่อบล็อกที่ครอบคลุมโดยไม่ต้องใช้ความพยายามเพิ่มเติม
เหมาะสำหรับโมดอล ข้อความป๊อปอัป และข้อความ เอฟเฟกต์การซ้อนและเอฟเฟกต์ความลึก รวมถึงป๊อปโอเวอร์
ผู้ชนะ
หากฉันอยู่บนเกาะและมีเทคนิคการทำสมาธิได้เพียง 1 อย่าง ฉันจะเลือก...
[เสียงกลอง]
Gentle Flex 🎉
.gentle-flex {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1ch;
}
คุณจะเห็นได้เสมอในสไตล์ชีตของฉันเพราะมีประโยชน์ทั้งสำหรับเลย์เอาต์ขนาดใหญ่และขนาดเล็ก เป็นโซลูชันที่เชื่อถือได้รอบด้านและให้ผลลัพธ์ตรงตามที่ฉันคาดหวัง นอกจากนี้ เนื่องจากฉันเป็นคนที่ชอบใช้การกำหนดขนาดโดยเนื้อหา ฉันจึงมักจะใช้โซลูชันนี้ แม้ว่าการพิมพ์จะยาว แต่ประโยชน์ที่ได้รับ ก็คุ้มค่ากับโค้ดเพิ่มเติม
MVP
Fluffy Center
.fluffy-center {
padding: 2ch;
}
Fluffy Center เป็นเทคนิคการจัดกึ่งกลางที่เล็กมากจนอาจมองข้ามไปได้ แต่ก็เป็นเทคนิคหลักในกลยุทธ์การจัดกึ่งกลางของฉัน ซึ่งเป็นหน่วยที่เล็กมากจนบางครั้งฉัน ลืมไปเลยว่ากำลังใช้มันอยู่
บทสรุป
สิ่งใดบ้างที่ทำให้กลยุทธ์การจัดกึ่งกลางของคุณใช้งานไม่ได้ จะเพิ่มความท้าทายอื่นๆ อะไรลงในกระดิ่งความยืดหยุ่นได้บ้าง ฉันพิจารณาการแปลและ การสลับความสูงอัตโนมัติในคอนเทนเนอร์... มีอะไรอีกไหม
ตอนนี้คุณรู้วิธีที่ฉันใช้แล้ว คุณจะทำอย่างไร มาลองใช้วิธีการที่หลากหลาย และเรียนรู้วิธีสร้างสรรค์สิ่งต่างๆ บนเว็บกัน ทำตาม Codelab พร้อมกับโพสต์นี้เพื่อสร้างตัวอย่างการจัดกึ่งกลางของคุณเอง เช่นเดียวกับตัวอย่างในโพสต์นี้ ทวีตเวอร์ชันของคุณมาให้ฉัน แล้วฉันจะเพิ่มลงในส่วนรีมิกซ์ของชุมชนด้านล่าง
รีมิกซ์ของชุมชน
- CSS Tricks พร้อมบล็อกโพสต์