เค้าโครงตาราง CSS วิธีใช้ minmax ()
โมดูล CSS กริดเค้าโครง ใช้การออกแบบที่ตอบสนองต่อไปอีกระดับโดยการแนะนำ ชนิดใหม่ของความยืดหยุ่น ที่ไม่เคยเห็นมาก่อน ตอนนี้เราทำไม่ได้เท่านั้น กำหนดกริดที่กำหนดเอง เร็วอย่างเห็นได้ชัดด้วย CSS อย่างเดียว แต่ CSS Grid ก็มีเช่นกัน อัญมณีที่ซ่อนอยู่มากมาย ที่ช่วยให้เราสามารถปรับแต่งกริดและบรรลุเลย์เอาต์ที่ซับซ้อน.
MinMax ()
ฟังก์ชัน เป็นหนึ่งในคุณสมบัติที่ไม่เป็นที่รู้จักกันอย่างแพร่หลาย ทำให้สามารถกำหนดขนาดของแทร็กกริดได้ เป็นช่วงต่ำสุดถึงสูงสุด เพื่อให้กริดสามารถปรับให้เข้ากับวิวพอร์ตของผู้ใช้แต่ละคนได้อย่างดีที่สุด.
วากยสัมพันธ์
ไวยากรณ์ของ MinMax ()
ฟังก์ชั่นค่อนข้างง่ายใช้เวลา สองข้อโต้แย้ง: ค่าต่ำสุดและค่าสูงสุด:
minmax (นาที, สูงสุด)
นาที
ราคา จะต้องมีขนาดเล็กลง กว่า สูงสุด
, มิฉะนั้น สูงสุด
ถูกเบราว์เซอร์ถูกละเว้น.
เราสามารถใช้ MinMax ()
ฟังก์ชั่นเป็น ค่าของ ตารางแม่แบบคอลัมน์
หรือ ตารางแม่แบบแถว
คุณสมบัติ (หรือทั้งสองอย่าง). ในตัวอย่างของเราเราจะใช้ชื่อเดิมเนื่องจากเป็นกรณีที่ใช้บ่อยกว่า.
.คอนเทนเนอร์ display: grid; ตารางเทมเพลตคอลัมน์: minmax (100px, 200px) 1fr 1fr; grid-template-rows: 100px 100px 100px; กริดช่องว่าง: 10px;
ในตัวอย่าง Codepen ด้านล่างคุณสามารถค้นหา โค้ด HTML และ CSS เราจะใช้ตลอดบทความ.
เราสามารถใช้ คุณค่าที่แตกต่าง ข้างใน MinMax ()
ฟังก์ชั่นทั้งหมดขึ้นอยู่กับประเภทของกริดแบบกำหนดเองที่เราต้องการสร้าง.
ค่าความยาวคงที่
มีวิธีการพื้นฐานสองวิธีที่เราสามารถใช้ MinMax ()
ฟังก์ชั่นด้วย ค่าความยาวคงที่.
ประการแรกเราสามารถใช้ MinMax ()
สำหรับคอลัมน์กริดเดียวเท่านั้น และกำหนดความกว้างของคอลัมน์อื่น ๆ ให้เป็นค่าคงที่แบบง่าย (พิกเซลที่นี่).
ตารางเทมเพลตคอลัมน์: minmax (100px, 200px) 200px 200px;
ในตัวอย่าง gif ด้านล่างคุณจะเห็นว่ารูปแบบนี้คือ ไม่ตอบสนอง, อย่างไรก็ตามคอลัมน์แรกมี ความยืดหยุ่นบางอย่าง. คอลัมน์ที่สองและคอลัมน์ที่สามรักษาความกว้างคงที่ (200px) ในขณะที่คอลัมน์แรกมีช่วงตั้งแต่ 100px ถึง 200px, ขึ้นอยู่กับพื้นที่ว่าง.
ประการที่สองเราสามารถกำหนดความกว้างของ มากกว่าหนึ่งคอลัมน์กริด การใช้ MinMax ()
. ค่า min และ max เป็นค่าคงที่ดังนั้นโดยค่าเริ่มต้นกริดคือ ไม่ตอบสนอง. อย่างไรก็ตามคอลัมน์เหล่านั้นคือ คล่องตัว, แต่จะอยู่ระหว่าง 100px ถึง 200px พวกเขา เติบโตและหดตัวพร้อมกัน ในขณะที่เราเปลี่ยนขนาดวิวพอร์ต.
ตารางเทมเพลตคอลัมน์: minmax (100px, 200px) minmax (100px, 200px) minmax (100px, 200px);
โปรดทราบว่าเรายังสามารถ ใช้ ซ้ำ ()
ฟังก์ชัน ด้วย MinMax ()
. ดังนั้นข้อมูลโค้ดก่อนหน้านี้สามารถเขียนได้เช่นนี้
ตารางเทมเพลตคอลัมน์: ทำซ้ำ (3, minmax (100px, 200px));
ค่าความยาวแบบไดนามิก
นอกเหนือจากค่าคงที่ MinMax ()
ฟังก์ชั่นยังยอมรับ หน่วยเปอร์เซ็นต์ และ หน่วยเศษส่วนใหม่ (fr) เป็นข้อโต้แย้ง โดยใช้พวกเขาเราสามารถบรรลุกริดที่กำหนดเองที่มีทั้ง อ่อนไหว และ เปลี่ยนขนาดของพวกเขา ตามพื้นที่ว่าง.
โค้ดด้านล่างส่งผลให้เกิดกริดซึ่งความกว้างของคอลัมน์แรก ช่วงระหว่าง 50% ถึง 80% ในขณะที่สองและสาม แบ่งปันพื้นที่ที่เหลืออย่างเท่าเทียมกัน.
ตารางเทมเพลตคอลัมน์: minmax (50%, 80%) 1fr 1fr;
เมื่อเราใช้ค่าแบบไดนามิกกับ MinMax ()
ฟังก์ชั่นมันเป็นสิ่งสำคัญในการตั้งค่า กฎที่เหมาะสม. ให้ฉันแสดงตัวอย่างที่ กริดแยกกัน:
ตารางเทมเพลตคอลัมน์: minmax (1fr, 2fr) 1fr 1fr;
กฎนี้ไม่มีเหตุผลใด ๆ เนื่องจากเบราว์เซอร์เป็น ไม่สามารถตัดสินใจได้ ค่าที่จะกำหนดให้กับ MinMax ()
ฟังก์ชัน ค่าต่ำสุดจะนำไปสู่ 1fr 1fr 1fr
ความกว้างคอลัมน์ในขณะที่สูงสุดถึง 2fr 1fr 1fr
. แต่ทั้งคู่เป็นไปได้แม้ในหน้าจอที่เล็กมาก มี ไม่มีสิ่งใดเกี่ยวข้องกับเบราว์เซอร์.
นี่คือผลลัพธ์:
รวมค่าคงที่และแบบไดนามิก
มันเป็นไปได้ที่จะ รวมค่าคงที่และแบบไดนามิก. ตัวอย่างเช่นในตัวอย่าง Codepen ด้านบนฉันใช้ minmax (100px, 200px) 1fr 1fr;
กฎที่ส่งผลให้ในตารางที่คอลัมน์แรก ช่วงระหว่าง 100px และ 200px และพื้นที่ที่เหลืออยู่คือ แบ่งปันอย่างเท่าเทียมกันระหว่างอีกสองรายการ.
ตารางเทมเพลตคอลัมน์: minmax (100px, 200px) 1fr 1fr;
มันน่าสนใจที่จะสังเกตว่าเมื่อวิวพอร์ตเติบโตขึ้นอันดับแรกคอลัมน์แรกจะเติบโตจาก 100px เป็น 200px อีกสองคนถูกปกครองโดยหน่วย fr เริ่มเติบโต หลังจากที่คนแรกถึงความกว้างสูงสุด. นี่เป็นเหตุผลเนื่องจากเป้าหมายของหน่วยเศษส่วนคือการแบ่งพื้นที่ว่าง (เหลือ) ที่มีอยู่.
นาทีเนื้อหา
, สูงสุดเนื้อหา
, และ รถยนต์
คำหลัก
มี คุณค่าประเภทที่สาม เราสามารถกำหนดให้ MinMax ()
ฟังก์ชัน นาทีเนื้อหา
, สูงสุดเนื้อหา
, และ รถยนต์
คำหลักที่เกี่ยวข้องกับขนาดของแทร็กกริดกับ มันมีเนื้อหา.
สูงสุดเนื้อหา
สูงสุดเนื้อหา
คำหลัก นำเบราว์เซอร์ที่คอลัมน์กริดจำเป็นต้องใช้ กว้างเท่ากับองค์ประกอบที่กว้างที่สุดที่มีอยู่.
ในตัวอย่างด้านล่างฉันวาง รูปภาพขนาดกว้าง 400px ภายในแทร็กกริดแรกและใช้กฎ CSS ต่อไปนี้ (คุณสามารถค้นหาตัวอย่าง Codepen ด้วยรหัสที่แก้ไขเต็มในตอนท้ายของบทความ):
.คอนเทนเนอร์ กริดเทมเพลตคอลัมน์: max-content 1fr 1fr; / ** * เหมือนกันกับเครื่องหมาย minmax (): * grid-template-columns: minmax (max-content, max-content) 1fr 1fr; * /
ฉันไม่ได้ใช้ MinMax ()
สัญกรณ์ยัง แต่ในความคิดเห็นรหัสข้างต้นคุณสามารถดูว่ารหัสเดียวกันจะมีลักษณะอย่างไรกับมัน (แม้ว่ามันจะฟุ่มเฟือยที่นี่).
อย่างที่คุณเห็นคอลัมน์กริดแรกกว้างเท่าองค์ประกอบที่กว้างที่สุด (นี่คือภาพ) ด้วยวิธีนี้ผู้ใช้สามารถดูภาพได้ตลอดเวลา ขนาดเต็ม. อย่างไรก็ตามภายใต้ขนาดวิวพอร์ตที่แน่นอนเค้าโครงนี้คือ ไม่ตอบสนอง.
นาทีเนื้อหา
นาทีเนื้อหา
คำหลัก นำเบราว์เซอร์ที่คอลัมน์กริดจำเป็นต้องมีความกว้างเท่ากับ องค์ประกอบที่แคบที่สุดประกอบด้วย, ในทางที่ ไม่นำไปสู่การล้น.
เรามาดูกันว่าการสาธิตก่อนหน้านี้กับภาพนั้นเป็นอย่างไรถ้าเราเปลี่ยนค่าของคอลัมน์แรกเป็น นาทีเนื้อหา
:
.คอนเทนเนอร์ กริดเทมเพลตคอลัมน์: min-content 1fr 1fr; / ** * เหมือนกันกับเครื่องหมาย minmax (): * grid-template-columns: minmax (min-content, min-content) 1fr 1fr; * /
ฉันออกจากพื้นหลังสีเขียวด้านล่างภาพเพื่อให้คุณเห็นขนาดเต็มของเซลล์กริดแรก.
อย่างที่คุณเห็นคอลัมน์แรกจะรักษาความกว้างที่เล็กที่สุดไว้ สามารถทำได้โดยไม่ล้น. ในตัวอย่างนี้สิ่งนี้จะถูกกำหนดโดยความกว้างที่น้อยที่สุดของเซลล์กริดที่ 4 และ 7 ซึ่งเกิดจาก การขยายความ
และ ขนาดตัวอักษร
คุณสมบัติเป็นรูปภาพในเซลล์แรก อาจถูกลดขนาดเป็นศูนย์ โดยไม่ต้องล้น.
หากเซลล์กริดมีสตริงข้อความ, นาทีเนื้อหา
อยากจะเป็น เท่ากับความกว้างของคำที่ยาวที่สุด, เนื่องจากเป็นองค์ประกอบที่เล็กที่สุดที่ไม่สามารถลดขนาดลงได้หากไม่มีการล้น นี่คือบทความที่ยอดเยี่ยมโดย BitsOfCode ที่คุณสามารถดูได้ นาทีเนื้อหา
และ สูงสุดเนื้อหา
ทำงานเมื่อเซลล์กริดมีสตริงข้อความ.
การใช้ นาทีเนื้อหา
และ สูงสุดเนื้อหา
ด้วยกัน
ถ้าเรา ใช้ นาทีเนื้อหา
และ สูงสุดเนื้อหา
ด้วยกัน ข้างใน MinMax ()
ฟังก์ชั่นเราจะได้รับคอลัมน์กริดที่:
- ตอบสนองได้
- ไม่มีล้น
- ไม่เติบโตกว้างกว่าองค์ประกอบที่กว้างที่สุด
.คอนเทนเนอร์ กริดเทมเพลตคอลัมน์: minmax (เนื้อหาขั้นต่ำเนื้อหาสูงสุด) 1fr 1fr;
เรายังสามารถใช้ นาทีเนื้อหา
และ สูงสุดเนื้อหา
คำหลัก พร้อมกับค่าความยาวอื่น ๆ ข้างใน MinMax ()
ฟังก์ชั่นจนกระทั่งกฎทำให้รู้สึก ตัวอย่างเช่น, minmax (25%, เนื้อหาสูงสุด)
หรือ minmax (เนื้อหาขั้นต่ำ 300px)
จะเป็นทั้งกฎที่ถูกต้อง.
รถยนต์
ในที่สุดเราก็สามารถใช้ รถยนต์
คำหลัก เป็นข้อโต้แย้งของ MinMax ()
ฟังก์ชัน.
เมื่อ รถยนต์
คือ ใช้เป็นค่าสูงสุด, ค่าของมันจะเหมือนกับ สูงสุดเนื้อหา
.
เมื่อไหร่ ใช้เป็นขั้นต่ำ, ค่าของมันถูกระบุโดย นาทีความกว้าง / นาทีความสูง
กฎซึ่งหมายความว่า รถยนต์
บางครั้งก็เหมือนกันกับ นาทีเนื้อหา
, แต่ ไม่เสมอ.
ในตัวอย่างก่อนหน้าของเรา, นาทีเนื้อหา
ไม่เท่ากับ รถยนต์
, เนื่องจากความกว้างน้อยที่สุดของคอลัมน์กริดแรกนั้นเล็กกว่าความสูงขั้นต่ำเสมอ ดังนั้นกฎ CSS ที่เป็นของ:
.คอนเทนเนอร์ กริดเทมเพลตคอลัมน์: minmax (เนื้อหาขั้นต่ำเนื้อหาสูงสุด) 1fr 1fr;
สามารถเขียนได้เช่นนี้
.คอนเทนเนอร์ กริดเทมเพลตคอลัมน์: minmax (อัตโนมัติ, อัตโนมัติ) 1fr 1fr;
รถยนต์
คำหลักสามารถ ใช้ร่วมกับหน่วยนิ่งและไดนามิกอื่น ๆ (พิกเซลหน่วย fr เปอร์เซ็นต์ ฯลฯ ) ภายใน MinMax ()
ฟังก์ชั่นเช่น minmax (อัตโนมัติ, 300px)
จะเป็นกฎที่ถูกต้อง.
คุณสามารถทดสอบวิธีการ นาทีเนื้อหา
, สูงสุดเนื้อหา
, และ รถยนต์
คำหลักทำงานร่วมกับ MinMax ()
ฟังก์ชั่นในการสาธิต Codepen ต่อไปนี้: