ทำตามเทคนิคการกําหนดศูนย์กลาง 5 เทคนิคขณะที่ทําการทดสอบชุดหนึ่งเพื่อดูว่าเทคนิคใดมีความยืดหยุ่นต่อการเปลี่ยนแปลงมากที่สุด
การกึ่งกลางใน CSS เป็นงานที่ยากมากจนกลายเป็นเรื่องตลกและถูกล้อเลียน 2020 CSS เติบโตขึ้นมากแล้ว ตอนนี้เราหัวเราะกับมุกตลกเหล่านั้นได้อย่างเต็มปาก
หากต้องการดูวิดีโอ โปรดดูโพสต์เวอร์ชัน YouTube ที่นี่
ความท้าทาย
การกึ่งกลางมีหลายประเภท จากกรณีการใช้งานที่แตกต่างกัน จำนวนสิ่งต่างๆ ที่ต้องจัดกึ่งกลาง เป็นต้น เราจึงสร้าง The Resilience Ringer เพื่อแสดงให้เห็นเหตุผลเบื้องหลังเทคนิคการจัดกึ่งกลางที่ "ได้ผล" เป็นการทดสอบความเครียดชุดหนึ่งสําหรับกลยุทธ์การกําหนดเป้าหมายแต่ละรายการเพื่อหาจุดสมดุลและให้คุณสังเกตประสิทธิภาพ ในตอนท้าย เราจะเปิดเผยเทคนิคที่ได้คะแนนสูงสุด รวมถึงเทคนิคที่ "มีประโยชน์มากที่สุด" เราหวังว่าคุณจะได้เทคนิคและโซลูชันใหม่ในการวางแนว
The Resilience Ringer
รีซิลিয়েนซ์ริงเกอร์แสดงถึงความเชื่อที่ว่ากลยุทธ์การกึ่งกลางควรมีความยืดหยุ่นต่อเลย์เอาต์ในต่างประเทศ วิวพอร์ตขนาดต่างๆ การแก้ไขข้อความ และเนื้อหาแบบไดนามิก หลักการเหล่านี้มีส่วนช่วยกำหนดการทดสอบความยืดหยุ่นต่อไปนี้เพื่อคงประสิทธิภาพของเทคนิคการจัดกึ่งกลาง
- ถูกบีบอัด: ควรจัดกึ่งกลางได้เมื่อมีการปรับเปลี่ยนความกว้าง
- ถูกบีบอัด: ควรจัดกึ่งกลางได้เมื่อมีการปรับเปลี่ยนความสูง
- ทำซ้ำ: การจัดกึ่งกลางควรเป็นแบบไดนามิกตามจำนวนรายการ
- แก้ไข: การกึ่งกลางควรปรับตามความยาวและภาษาของเนื้อหา
- โฟลว์: การจัดกึ่งกลางควรกำหนดทิศทางเอกสารและโหมดการเขียนได้ตลอด
โซลูชันที่ชนะควรแสดงให้เห็นถึงความยืดหยุ่นโดยการรักษาเนื้อหาให้อยู่ตรงกลางขณะถูกบีบอัด บีบอัดซ้ำ แก้ไข และเปลี่ยนเป็นโหมดและทิศทางภาษาต่างๆ เป็นศูนย์ที่เชื่อถือได้และยืดหยุ่น เป็นศูนย์ที่ปลอดภัย
คำอธิบาย
เราได้ใส่คำแนะนำสีภาพบางส่วนไว้เพื่อช่วยให้คุณคงข้อมูลเมตาบางอย่างไว้ในบริบท
- เส้นขอบสีชมพูแสดงการเป็นเจ้าของสไตล์การจัดกึ่งกลาง
- กล่องสีเทาคือพื้นหลังของคอนเทนเนอร์ที่ต้องการจัดวางรายการให้อยู่ตรงกลาง
- แต่ละรายการย่อยมีพื้นหลังสีขาวเพื่อให้คุณเห็นผลที่เทคนิคการจัดกึ่งกลางมีต่อขนาดกล่องของรายการย่อย (หากมี)
ผู้เข้าแข่งขัน 5 คน
เทคนิคการหาจุดศูนย์กลาง 5 เทคนิคจะเข้าสู่ Resilience Ringer แต่มีเพียงเทคนิคเดียวที่จะรับ 👸มงกุฎแห่งความยืดหยุ่นไปได้
1. ศูนย์เนื้อหา
- Squish: เยี่ยม
- สควอช: เยี่ยมมาก
- ซ้ำ: เยี่ยม
- แก้ไข: เยี่ยมเลย!
- Flow: เยี่ยมไปเลย
การจะเอาชนะความกระชับของ display: grid
และ place-content
ได้ยาก เนื่องจากจะจัดแนวและจัดตำแหน่งองค์ประกอบย่อยให้อยู่ตรงกลางพร้อมกัน จึงถือเป็นเทคนิคการจัดตำแหน่งที่ยอดเยี่ยมสำหรับกลุ่มองค์ประกอบที่มีไว้เพื่ออ่าน
.content-center {
display: grid;
place-content: center;
gap: 1ch;
}
- จัดเนื้อหากึ่งกลางเนื้อหาแม้จะอยู่ในพื้นที่จํากัดและเนื้อหาส่วนเกิน
- การดูแลรักษาและการแก้ไขที่รวมอยู่ในที่เดียว
- Gap รับประกันการเว้นระยะห่างเท่าๆ กันระหว่างเด็ก n คน
- ตารางกริดจะสร้างแถวโดยค่าเริ่มต้น
- องค์ประกอบย่อยที่กว้างที่สุด (
max-content
) จะกำหนดความกว้างให้กับองค์ประกอบย่อยที่เหลือทั้งหมด เราจะอธิบายเรื่องนี้เพิ่มเติมในการปรับราคาอย่างค่อยเป็นค่อยไป
เหมาะสําหรับเลย์เอาต์แบบมาโครที่มีย่อหน้าและบรรทัดแรก ต้นแบบ หรือโดยทั่วไปคือสิ่งที่ต้องจัดกึ่งกลางให้อ่านง่าย
2. การเคลื่อนไหวแบบยืดหยุ่น
- Squish: เยี่ยมมาก
- สควอช: เยี่ยมมาก
- ซ้ำ: เยี่ยมมาก
- แก้ไข: เยี่ยมมาก
- ขั้นตอน: เยี่ยมมาก
Gentle Flex คือกลยุทธ์ที่เน้นจุดศูนย์กลางเท่านั้นอย่างแท้จริง ซึ่งนุ่มนวลและนุ่มนวลเนื่องจาก
place-content: center
จะไม่มีการเปลี่ยนแปลงขนาดกล่องของเด็กระหว่างการจัดกึ่งกลาง รายการทั้งหมดจะเรียงซ้อนกัน จัดไว้ตรงกลาง และเว้นระยะห่างอย่างน้อยที่สุดเท่าที่จะเป็นไปได้
.gentle-flex {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1ch;
}
- จัดการเฉพาะการจัดแนว ทิศทาง และการจัดจำหน่าย
- แก้ไขและดูแลรักษาได้ในที่เดียว
- Gap รับประกันการเว้นระยะห่างเท่าๆ กันระหว่างเด็ก n คน
- โค้ดหลายบรรทัด
เหมาะสำหรับเลย์เอาต์ทั้งแบบมหภาคและแบบไมโคร
3. Autobot
- ตุ๊กตา: เยี่ยมเลย
- สควอช: ดีมาก
- ซ้ำ: ใช้ได้
- แก้ไข: เยี่ยม
- โฟลว์: ดีมาก
คอนเทนเนอร์ได้รับการตั้งค่าเป็น Flex ที่ไม่มีสไตล์การจัดตำแหน่ง ส่วนองค์ประกอบย่อยโดยตรงมีสไตล์เป็นระยะขอบอัตโนมัติ การทํางานกับองค์ประกอบทุกด้านของmargin: auto
เป็นประสบการณ์ที่ยอดเยี่ยมและชวนให้นึกถึงอดีต
.autobot {
display: flex;
}
.autobot > * {
margin: auto;
}
- เคล็ดลับสนุกๆ
- สรุปคร่าวๆ
- ผลลัพธ์ที่แปลกประหลาดเมื่อแสดงผลเกิน
- การอาศัยการกระจายแทนช่องว่างหมายความว่าเลย์เอาต์อาจเกิดขึ้นโดยมีช่องว่างระหว่างชิ้นงาน
- การ "ดัน" บุตรหลานไปยังตำแหน่งหนึ่งๆ นั้นไม่เหมาะและอาจส่งผลให้มีการเปลี่ยนแปลงขนาดกล่องของบุตรหลาน
เหมาะสำหรับการจัดวางไอคอนหรือองค์ประกอบจำลองให้อยู่ตรงกลาง
4. Fluffy Center
- Squish: ไม่ดี
- สควอช: ไม่ดี
- ซ้ำกัน: ใช้ไม่ได้
- แก้ไข: เยี่ยมมาก
- ขั้นตอน: เยี่ยมมาก (ตราบใดที่คุณใช้พร็อพเพอร์ตี้เชิงตรรกะ)
ผู้เข้าแข่งขัน "fluffy center" เป็นคำที่ฟังดูน่าอร่อยที่สุดเท่าที่เคยมีมา และเป็นเทคนิคการจัดกึ่งกลางเพียงเทคนิคเดียวที่เป็นขององค์ประกอบ/องค์ประกอบย่อยทั้งหมด มาดูขอบสีชมพูด้านใน แบบเดี่ยวของเรากัน!
.fluffy-center {
padding: 10ch;
}
- ปกป้องเนื้อหา
- ปรมาณู
- การทดสอบทุกรายการโดยมีกลยุทธ์การอยู่ตรงกลางนี้ซ่อนอยู่
- เว้นวรรคระหว่างคำ
- ความรู้สึกว่าไม่มีประโยชน์
- คอนเทนเนอร์และสินค้ามักจะเกิดความขัดแย้งกัน เนื่องจากแต่ละคอนเทนเนอร์จะเกี่ยวกับขนาด
เหมาะสําหรับการจัดกึ่งกลางที่เน้นคำหรือวลี แท็ก ยาเม็ด ปุ่ม ชิป และอื่นๆ
5. Pop & Plop
- Squish: ตกลง
- สควอช: ใช้ได้
- ซ้ำ: ไม่ดี
- แก้ไข: เยี่ยม
- ขั้นตอน: ดี
การ "ปรากฏ" นี้เพราะตำแหน่งสัมบูรณ์ทำให้องค์ประกอบออกมาเคลื่อนไหวปกติ ส่วน "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 พร้อมบล็อกโพสต์