ติดตามเทคนิคการจัดกึ่งกลาง 5 เทคนิคขณะที่ผ่านการทดสอบต่างๆ เพื่อดูว่าเทคนิคใดมีความยืดหยุ่นต่อการเปลี่ยนแปลงมากที่สุด
การจัดกึ่งกลางใน CSS เป็นความท้าทายที่ขึ้นชื่อ เต็มไปด้วยเรื่องตลกและการล้อเลียน 2020 CSS เติบโตขึ้นอย่างเต็มที่ และตอนนี้เราสามารถหัวเราะกับมุกตลกเหล่านั้นได้อย่างจริงใจ ไม่ใช่หัวเราะแบบฝืนๆ
หากคุณชอบดูวิดีโอมากกว่า เรามีโพสต์นี้ในเวอร์ชัน YouTube ด้วย
ความท้าทาย
การจัดให้อยู่กึ่งกลางมีหลายประเภท ตั้งแต่กรณีการใช้งานที่แตกต่างกัน จำนวนสิ่งที่จะจัดให้อยู่กึ่งกลาง และอื่นๆ เพื่อแสดงให้เห็นเหตุผลเบื้องหลังเทคนิคการจัดให้อยู่กึ่งกลางที่ "ชนะ" ฉันจึงสร้าง The Resilience Ringer ขึ้นมา ซึ่งเป็นการทดสอบความเครียดหลายครั้งสำหรับกลยุทธ์การจัดศูนย์กลางแต่ละกลยุทธ์เพื่อสร้างสมดุลภายในและให้คุณสังเกตประสิทธิภาพของกลยุทธ์เหล่านั้น ในตอนท้าย ฉันจะเปิดเผยเทคนิคที่ได้คะแนนสูงสุด รวมถึงเทคนิคที่ "มีคุณค่ามากที่สุด" เราหวังว่าคุณจะได้รับเทคนิคและโซลูชันใหม่ๆ ในการสร้างสมดุลให้ตนเอง
ผู้เชี่ยวชาญด้านความยืดหยุ่น
Resilience Ringer เป็นตัวแทนของความเชื่อของฉันที่ว่ากลยุทธ์การจัดกึ่งกลางควรมีความยืดหยุ่นต่อเลย์เอาต์สากล วิวพอร์ตขนาดต่างๆ การแก้ไขข้อความ และเนื้อหาแบบไดนามิก หลักการเหล่านี้ช่วยกำหนดรูปแบบการทดสอบความยืดหยุ่นต่อไปนี้เพื่อให้เทคนิคการจัดศูนย์กลางคงอยู่ได้
- บีบอัด: การจัดให้อยู่กึ่งกลางควรจัดการการเปลี่ยนแปลงความกว้างได้
- Squashed: centering should be able to handle changes to height
- Duplicate: centering should be dynamic to number of items
- แก้ไข: การจัดกึ่งกลางควรปรับเปลี่ยนตามความยาวและภาษาของเนื้อหา
- Flow: การจัดให้อยู่กึ่งกลางควรไม่ขึ้นอยู่กับทิศทางของเอกสารและโหมดการเขียน
โซลูชันที่ชนะควรแสดงให้เห็นถึงความยืดหยุ่นโดยการเก็บเนื้อหาไว้ตรงกลางขณะที่ถูกบีบอัด บด ทำซ้ำ แก้ไข และสลับเป็นโหมดและทิศทางภาษาต่างๆ ศูนย์ที่เชื่อถือได้และยืดหยุ่น ศูนย์ที่ปลอดภัย
Legend
เราได้ใส่คำแนะนำสีที่มองเห็นได้เพื่อช่วยให้คุณเก็บข้อมูลเมตาบางอย่างไว้ในบริบท
- เส้นขอบสีชมพูแสดงถึงการเป็นเจ้าของสไตล์การจัดกึ่งกลาง
- กล่องสีเทาคือพื้นหลังของคอนเทนเนอร์ที่ต้องการจัดรายการให้อยู่กึ่งกลาง
- องค์ประกอบย่อยแต่ละรายการมีสีพื้นหลังเป็นสีขาวเพื่อให้คุณเห็นผลกระทบที่เทคนิคการจัดกึ่งกลางมีต่อขนาดกล่องย่อย (หากมี)
ผู้เข้าแข่งขัน 5 คน
เทคนิคการทำสมาธิ 5 เทคนิคจะเข้าสู่สังเวียนความยืดหยุ่น แต่จะมีเพียงเทคนิคเดียวเท่านั้นที่จะได้รับมงกุฎแห่งความยืดหยุ่น 👸
1. ศูนย์เนื้อหา
- Squish: เยี่ยมเลย
- สควอช: เยี่ยมเลย
- Duplicate: ยอดเยี่ยม
- แก้ไข: เยี่ยมเลย
- ความลื่นไหล: ดีมาก
คงยากที่จะเอาชนะความกระชับของ display: grid และชวเลข place-content ได้ เนื่องจากจะจัดองค์ประกอบย่อยให้อยู่กึ่งกลางและจัดชิดขอบร่วมกัน จึงเป็นเทคนิคการจัดกึ่งกลางที่มีประสิทธิภาพสำหรับกลุ่มองค์ประกอบที่ต้องการให้อ่าน
.content-center {
display: grid;
place-content: center;
gap: 1ch;
}
- เนื้อหาจะอยู่ตรงกลางแม้ในพื้นที่จำกัดและมีเนื้อหาล้น
- การแก้ไขและการบำรุงรักษาทั้งหมดจะรวมอยู่ในที่เดียว
- ช่องว่างจะรับประกันระยะห่างที่เท่ากันระหว่างองค์ประกอบย่อย n รายการ
- ตารางกริดจะสร้างแถวโดยค่าเริ่มต้น
- องค์ประกอบย่อยที่กว้างที่สุด (
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;
}
- จัดการเฉพาะการจัดแนว ทิศทาง และการกระจาย
- การแก้ไขและการบำรุงรักษาทั้งหมดรวมอยู่ในที่เดียว
- ช่องว่างจะรับประกันระยะห่างที่เท่ากันระหว่างองค์ประกอบย่อย n รายการ
- บรรทัดโค้ดมากที่สุด
เหมาะสำหรับทั้งเลย์เอาต์แบบมาโครและไมโคร
3. Autobot
- Squish: ยอดเยี่ยม
- สควอช: ดีมาก
- ซ้ำ: ไม่เป็นไร
- แก้ไข: ดีมาก
- ความลื่นไหล: ดีมาก
คอนเทนเนอร์ได้รับการตั้งค่าเป็น Flex โดยไม่มีสไตล์การจัดแนว ส่วนองค์ประกอบย่อยโดยตรงจะได้รับการจัดสไตล์ด้วยระยะขอบอัตโนมัติ การทำงานกับทุกด้านขององค์ประกอบmargin: autoให้ความรู้สึกที่ยอดเยี่ยมและชวนให้คิดถึงอดีต
.autobot {
display: flex;
}
.autobot > * {
margin: auto;
}
- เคล็ดลับสนุกๆ
- แบบเร็วๆ และไม่เป็นทางการ
- ผลลัพธ์ที่ดูแปลกตาเมื่อมีข้อความล้น
- การใช้การกระจายแทนช่องว่างหมายความว่าเลย์เอาต์อาจเกิดขึ้นโดยที่องค์ประกอบย่อยแตะด้านข้างกัน
- การ "ดัน" เข้าไปในตำแหน่งดูเหมือนจะไม่เหมาะสมและอาจส่งผลให้ขนาดกล่องขององค์ประกอบย่อยเปลี่ยนแปลงไป
เหมาะสำหรับการจัดไอคอนหรือองค์ประกอบเทียมให้อยู่ตรงกลาง
4. Fluffy Center
- บีบอัด: ไม่ดี
- สควอช: ไม่ดี
- ซ้ำ: ไม่ดี
- แก้ไข: เยี่ยมเลย
- Flow: เยี่ยมมาก (ตราบใดที่คุณใช้พร็อพเพอร์ตี้เชิงตรรกะ)
ผู้เข้าแข่งขัน "fluffy center" เป็นผู้เข้าแข่งขันที่ฟังดูน่าอร่อยที่สุด และเป็นเทคนิคการจัดให้อยู่กึ่งกลางเพียงเทคนิคเดียวที่องค์ประกอบ/องค์ประกอบย่อยเป็นเจ้าของทั้งหมด เห็นขอบสีชมพูด้านใน ของ Solo ไหม
.fluffy-center {
padding: 10ch;
}
- ปกป้องเนื้อหา
- ปรมาณู
- การทดสอบทุกครั้งจะมีกลยุทธ์การจัดกึ่งกลางนี้อยู่โดยไม่เปิดเผย
- Word space is gap
- ภาพลวงตาว่าไม่มีประโยชน์
- จะมีการขัดแย้งกันระหว่างคอนเทนเนอร์กับรายการต่างๆ เนื่องจากแต่ละรายการมีขนาดที่แน่นอน
เหมาะสำหรับการจัดกึ่งกลางที่เน้นคำหรือวลี แท็ก ป้ายยา ปุ่ม ชิป และอื่นๆ
5. Pop & Plop
- Squish: โอเค
- สควอช: พอใช้
- ซ้ำ: ไม่ดี
- แก้ไข: ดี
- การไหล: ดี
ซึ่งจะ "เด้ง" เนื่องจากตำแหน่งแบบสัมบูรณ์จะทำให้องค์ประกอบเด้งออกจากขั้นตอนปกติ ส่วน "plop" ของชื่อมาจากตอนที่ฉันพบว่ามีประโยชน์มากที่สุด นั่นคือการวางไว้บนสิ่งอื่นๆ ซึ่งเป็นเทคนิคการจัดกึ่งกลางโอเวอร์เลย์แบบคลาสสิกและสะดวก ซึ่งมีความยืดหยุ่นและปรับเปลี่ยนตามขนาดเนื้อหาได้ บางครั้งคุณก็แค่ต้องวาง UI ไว้ด้านบนของ UI อื่น
- มีประโยชน์
- เชื่อถือได้
- เมื่อคุณต้องการใช้ มันจะมีค่ามาก
- โค้ดที่มีค่าเปอร์เซ็นต์เป็นลบ
- ต้องใช้
position: relativeเพื่อบังคับบล็อกที่มีอยู่ - การขึ้นบรรทัดใหม่เร็วเกินไปและไม่เหมาะสม
- โดยสามารถมีได้เพียง 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 เป็นเทคนิคการจัดกึ่งกลางที่เล็กมากจนมองข้ามได้ง่าย แต่เป็นกลยุทธ์การจัดกึ่งกลางที่สำคัญของฉัน มันเป็นอะตอมมากจนบางครั้งฉันก็ลืมไปว่ากำลังใช้มันอยู่
บทสรุป
สิ่งใดบ้างที่ทำให้กลยุทธ์การจัดกึ่งกลางของคุณใช้ไม่ได้ เราจะเพิ่มความท้าทายอะไรอีก ลงในเกม Resilience Ringer ได้บ้าง ฉันพิจารณาการแปลและสวิตช์ความสูงอัตโนมัติในคอนเทนเนอร์… มีอะไรอีกไหม
ตอนนี้คุณก็รู้แล้วว่าเราทำยังไง แล้วคุณล่ะจะทำยังไง มาลองใช้วิธีการที่หลากหลาย และเรียนรู้วิธีทั้งหมดในการสร้างบนเว็บกัน ทำตาม Codelab ในโพสต์นี้เพื่อสร้างตัวอย่างการจัดกึ่งกลางของคุณเอง เช่นเดียวกับตัวอย่างในโพสต์นี้ ทวีตเวอร์ชันของคุณมาให้ฉัน แล้วฉันจะเพิ่มลงในส่วนรีมิกซ์ของชุมชนด้านล่าง
รีมิกซ์ของชุมชน
- CSS Tricks พร้อมบล็อกโพสต์