คุณสมบัติที่มีประโยชน์อีกอย่างของกริด CSS คือความสามารถในการสร้างรางน้ำ (ช่องว่าง) ระหว่างรายการกริด ดังนั้นแทนที่จะต้องเพิ่มระยะขอบให้กับกริดเด็กเหมือนใน flexbox เราสามารถตั้งค่า grip-gap:10px
.
เมื่อเราเปิดใช้ตัวตรวจสอบกริดของ Firefox (มันยอดเยี่ยมมาก ถ้าคุณยังไม่ได้ลอง) ตารางจะมีลักษณะดังนี้:
เราสามารถเห็นตารางสามคอลัมน์ที่อยู่ตรงกลางได้อย่างชัดเจน แต่ลิงก์หน้าแรกจะต้องอยู่ในแถวของตัวเอง เราต้องการความกว้างสามคอลัมน์
ในการทำเช่นนี้ เราจะใช้คลาสตัวช่วยอีกครั้ง เพิ่มคลาส "fullwidth" ให้กับหน้าแรก
ธาตุ
ในสไตล์ของเรา เราจะให้ .fullwidth
เลือกกฎลักษณะของ grid-column:1 / 4
. ซึ่งจะทำให้คอลัมน์ย่อยของกริดเริ่มต้นที่เส้นกริดแนวตั้งเส้นแรก และขยายไปถึงเส้นกริดที่สี่ในตอนท้าย
หน้าตาก็จะประมาณนี้ และเราได้เปิดเบอร์ไลน์ไว้เพื่อให้คุณได้ดูวิธีการนับ:
เพิ่มสไตล์กริดสำหรับเดสก์ท็อป
สำหรับเดสก์ท็อป เราต้องการให้ลิงก์ทั้งหมดอยู่ในแถวเดียว และอีกครั้ง เราต้องการให้ลิงก์หน้าแรกอยู่ทางซ้าย จากนั้นให้ลิงก์อื่นๆ อีกสามลิงก์อยู่ทางด้านขวา
ฉันยังต้องการให้แต่ละคอลัมน์ในสามคอลัมน์สุดท้ายมีขนาดเท่ากับเนื้อหาที่อยู่ในนั้น เพื่อให้แน่ใจว่ามีช่องว่างระหว่างลิงก์เท่ากัน
ทั้งหมดนี้หมายความว่าเราจะต้องเปลี่ยนเทมเพลตกริดสำหรับความกว้างของอุปกรณ์ที่ใหญ่ขึ้น โดยใช้คิวรีสื่อ
แล้วเราควรเปลี่ยน template เป็นอะไรดี? เราต้องการลิงก์ทั้งหมดในแถวเดียวกัน ดังนั้นเราต้องการตารางสี่คอลัมน์
หากต้องการก้าวไปในทิศทางที่ถูกต้องเพียงขั้นตอนเดียว เรามาเริ่มกันโดยการตั้งค่าการเปลี่ยน grid-template-columns
คุณสมบัติจาก repeat(3, 100px)
เพื่อ ทำซ้ำ (4, 100px)
บนพาเรนต์กริดสำหรับความกว้างมากกว่า 600px
สิ่งนี้จะสร้างสี่คอลัมน์ และเราสามารถปรับแต่งมันต่อไปได้
นอกจากนี้ เรามาอัปเดต .fullwidth
. กัน สไตล์จึงใช้เพียงคอลัมน์เดียวบนเดสก์ท็อป โดยการตั้งค่า grid-column:1 / 2
. ซึ่งจะทำให้คอลัมน์หน้าแรกขยายจากเส้นกริดที่ 1 ไปยังเส้นกริดที่ 2 เท่านั้น
นี่คือสิ่งที่เรามี:
ลิงก์อยู่ในสี่คอลัมน์ แต่เนื่องจากความกว้างทั้งหมด 100px จึงอยู่กึ่งกลางหน้า
ในการทำให้ลิงก์หน้าแรกแรกไปทางซ้าย เราจำเป็นต้องทำให้กริดใช้ความกว้างของหน้าทั้งหมด 100% และในการทำเช่นนั้น เราสามารถทำให้คอลัมน์แรกนั้นในเทมเพลตกริดใช้พื้นที่ว่างที่มีอยู่ได้
ดังนั้นการเปลี่ยน grid-template-columns
ถึง 1fr ซ้ำ (3, 100px)
จะปล่อยให้ลิงก์รองสามลิงก์กว้าง 100px และคอลัมน์แรกจะใช้พื้นที่ที่เหลือ
มาดูกันว่าจะหน้าตาเป็นอย่างไร:
การเดินทาง! อย่างไรก็ตาม เพื่อให้สามคอลัมน์สุดท้ายกว้างเท่ากับเนื้อหา เราใช้ fit-content()
การทำงาน. หากเราตั้งค่าสามคอลัมน์สุดท้ายเป็น fit-content(50px)
จากนั้นคอลัมน์จะแยกขนาดให้พอดีกับเนื้อหา
ดังนั้น grid-template-columns
. ของเรา คุณสมบัติสำหรับเดสก์ท็อปตอนนี้จะเป็น 1fr repeat(3, fit-content(50px))
.
ความกว้างของคอลัมน์ดูดี!
ตอนนี้ เรามาจัดแนวข้อความลิงก์ในคอลัมน์กัน ตอนนี้พวกมันอยู่ตรงกลางเนื่องจาก justify-items:center
กฎที่เราใช้สำหรับมือถือ
มาเปลี่ยนให้เดสก์ท็อปเป็น justify-items:end
เพื่อจัดแนวลิงก์ทางด้านขวา จากนั้นเราสามารถจัดวางเฉพาะลิงก์หน้าแรกทางด้านซ้ายโดยการตั้งค่า justify-self:start
สำหรับ .fullwidth
ตัวเลือก
ตอนนี้ เราสามารถเห็นการนำทางเดสก์ท็อปที่เสร็จสิ้นสำหรับตาราง และตรงกับการนำทาง flexbox:
Flexbox หรือ Grid?
ในการสร้างการนำทางนี้ รูปแบบ flexbox ใช้โค้ด 46 บรรทัดใน style.scss
ของเรา ในการเขียน และมาร์กอัป HTML นั้นซับซ้อนกว่าเล็กน้อย
สไตล์กริดใช้โค้ดเพียง 24 บรรทัดในการเขียน! ที่ต่างกันมากคือเราต้องเพิ่ม margin-bottom
และ ขอบขวา
กฎของสไตล์เพื่อเพิ่มช่องว่างระหว่างรายการใน flexbox และในกริดที่ดูแลทั้งหมดด้วย grid-gap
ทรัพย์สิน
โดยส่วนตัวแล้วฉันชอบโค้ดที่มีน้ำหนักเบาซึ่งจำเป็นสำหรับกริด CSS แต่ flexbox ยังคงเป็นตัวเลือกที่ดี หากคุณคุ้นเคยกับ flexbox มากขึ้น!
คุณสามารถดูซอร์สโค้ดได้ที่นี่ใน Codepen