FlexBox เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการลด CSS BLOAT และมีน้ำตาลในตัวเพื่อจัดการกับสิ่งต่าง ๆ เช่นการสั่งซื้อและการจัดตำแหน่ง แต่มันไม่ได้ให้ความช่วยเหลือใด ๆ ในการทำคณิตศาสตร์ที่สร้างคอลัมน์และขนาดรางน้ำ ผู้เชี่ยวชาญจำนวนมากของรัฐซ้ำ ๆ : Flexbox ดี แต่ไม่ใช่ระบบกริด
เราควรใช้ FlexBox แต่เราไม่ควรทิ้งแนวคิดพื้นฐานไว้เบื้องหลังระบบกริดที่ดึงเราออกจากการออกแบบ 'ยุคภูมิศาสตร์':
เราสามารถใช้หนึ่งในระบบ Flexbox Grid จำนวนมากออกไปที่นั่น แต่ในความซื่อสัตย์ทุกรูปแบบที่อยู่เบื้องหลังเหล่านี้ส่วนใหญ่จะเหมือนกับกริดที่ใช้ลอย ผู้เขียนเพียงเพิ่มการแสดงผล: Flex ไปยังคอนเทนเนอร์พร้อมกับคลาส Helper บางตัวที่ทำให้คุณสมบัติ Flexbox ของ obluscate (ตัวอย่างเช่นคลาสเช่นคลาส .grid-vertical-align-mid เป็นการทำให้งงงวยของ จัดตำแหน่งรายการ: ศูนย์ .
ความแตกต่างเพียงอย่างเดียวคือตอนนี้คอลัมน์คือ 'งอ' ซึ่งหมายความว่าเราได้รับน้ำตาลที่ฉันพูดถึงก่อนหน้านี้ แต่สิ่งนี้ยังไม่สามารถแก้ปัญหาหลักที่กริดเผชิญกับหน้าวันนี้: ระบบกริดยังคงส่งออก CSS จำนวนมากและกริดยังคงน่าเบื่อ
ผู้เขียนตารางมักจะแจกจ่ายชุด CSS ขนาดใหญ่ที่สามารถชดเชยการสั่งซื้อแหล่งที่มาจัดตำแหน่งและปรับขนาดตามขนาดอุปกรณ์โดยพลการ พวกเขาพึ่งพา GZIP เพื่อลดความเสียหายบางอย่าง แต่สิ่งนี้ไม่ได้รับทั้งหมด ถ้าคุณไม่ต้องการคุณสมบัติพิเศษเหล่านั้น
สมมติว่าเป็นกรอบที่คุณใช้ข้อเสนอ Grid Mixins ทางออกที่ดีที่สุดอาจเรียนรู้และเขียนคอลัมน์ของคุณเอง สิ่งนี้ทำให้เกิดการขยายตัวเล็กน้อย แต่ จำกัด กริดของคุณต่อเศษส่วนของคุณและไม่ได้มีความคล่องตัวในการเคลื่อนย้ายระหว่างเฟรมเวิร์กที่แตกต่างกัน
ไปยังประเด็นที่สอง นักออกแบบได้กลายเป็นที่ถูกล็อคทางจิตใจในการตัดสินใจทั้งหมดของพวกเขาตามการผสมผสานของคอลัมน์ขนาดเท่ากัน เป็นผลให้อินเทอร์เน็ตทั้งหมดเริ่มเบลอเข้าด้วยกันเป็น 'สแต็กบนมือถือ การรวมคอลัมน์ 1/12 ใน Dystopia อื่น ๆ
Flexbox แนะนำ ยืดหยุ่น ซึ่งเป็นอิสระให้เราเล็กน้อย ตอนนี้เราสามารถตั้งค่าขนาดที่ดูดีและเติมพื้นที่ที่เหลือด้วยองค์ประกอบที่ยืดออก แต่รางน้ำจะเข้าแถวกันอย่างสม่ำเสมอตลอดหน้าหรือไม่? มีพื้นที่เนื้อหาที่วางไว้กับสัดส่วนใด ๆ ในใจหรือเรากลับไปที่เพียงแค่มีปีก?
วิธีการแก้ปัญหาเหล่านี้รวมอยู่ในฟังก์ชั่นที่เรียกว่า postcss-ant Postcss Plugins สามารถใช้งานได้กับเครื่องมือสร้างหลากหลายเช่น Webpack, Gulp หรือเพียงแค่บรรทัดคำสั่ง มดผสมเข้ากับ CSS ธรรมดาอย่างราบรื่น (หรือตัวประมวลผลล่วงหน้า) ด้วย API ที่เรียบง่ายที่หลอกลวงที่หน้ากากมีความคิดที่เหลือเชื่อ การคำนวณ สูตร. มันต้องใช้พารามิเตอร์แบบผสมสองแบบที่จะดึงขนาดที่เป็นมิตรกับกริด
ตัวอย่างอาจทำให้ชัดเจนขึ้น: ความกว้าง: ขนาด (1/2) รับ (1) ผลตอบแทน Calc (99.99% * 1/2 - (30px - 30px * 1/2)) . มาทำลายนี้กัน:
เราได้รับความกว้างสำหรับแต่ละคอลัมน์ในตารางสองคอลัมน์ที่มีรางน้ำ 30px เดียวระหว่างพวกเขา:
.grid {
จอแสดงผล: Flex;
Flex-wrap: ห่อ;
}
.half {
ความกว้าง: ขนาด (1/2) รับ (1); / * ส่งคืน calc (99.99% * 1/2 - (30px - 30px * 1/2)) * /
มาร์จิ้นขวา: 30px; / * วางรางน้ำที่ด้านขวาของแต่ละคอลัมน์ * /
}
.half: nth-child (2n + 2) {/ * เริ่มต้นที่องค์ประกอบที่ 2 และเริ่มนับ 2s * /
มาร์จิ้นขวา: 0; / * ลบรางน้ำสุดท้ายออกจากทุกแถว * /
}
สิ่งนี้ทำให้นักออกแบบมีพลังในการใช้ขนาดเหล่านี้ได้ทุกที่ที่พวกเขาเห็นสมควร แต่ลองดำน้ำลึก
ขนาด (100px 1/2) รับ (1) ผลตอบแทน 100px . ง่ายพอ แต่ทำไมเราต้องใช้มดเพื่อกลับมา 100px ? เราจะไปที่หนึ่งในวินาที
ขนาด (100px 1/2) รับ (2) ผลตอบแทน Calc ((99.99% - (100px + (30px * 1)) * 1/2 - (30px - 30px * 1/2)) . อึศักดิ์สิทธิ์ มดกำลังค้นหาขนาดรวมของจำนวนคงที่แล้วกลับมา 1/2 สิ่งที่เหลืออยู่ - ในวิธีที่เป็นมิตรกับกริดที่ n
เราสามารถใช้สิ่งเหล่านี้ได้ การคำนวณ สูตรเพื่อสร้างกริดด้วย 100px คอลัมน์และสอง 1/2 คอลัมน์เช่นนั้น (ฉันจะไม่ละเว้น .grid สไตล์เพื่อบันทึกต้นไม้ แต่ให้แน่ใจว่าได้รวมไว้ในรหัสของคุณ):
.Fixed-Size {
ความกว้าง: ขนาด (100px 1/2) รับ (1); / * ส่งคืน 100px (ฉันรู้ว่าดูเหมือนว่าโง่ แต่ทนกับฉันอีกหน่อย) * /
มาร์จิ้นขวา: 30px;
}
.half {
ความกว้าง: ขนาด (100px 1/2) รับ (2); / * ส่งคืน calc ((99.99% - (100px + (30px * 1))) * 1/2 - (30px - 30px * 1/2)) * /
มาร์จิ้นขวา: 30px;
}
.half: nth-child (3n + 3) {
มาร์จิ้นขวา: 0;
}
ตอนนี้เราสามารถรับขนาดที่ไม่สามารถทำได้ก่อนหน้านี้ แต่ยังไม่ยืดหยุ่นเกินจริงและสามารถต้องเขียนจำนวนมากเมื่อจัดการกับหลายขนาด
ตัวประมวลผลล่วงหน้าและ POSTCSS ไม่สามารถเข้ากันได้เสมอ - โดยเฉพาะอย่างยิ่งเมื่อมีการใช้ไวยากรณ์ที่กำหนดเอง โชคดีที่ API ของ Ant เป็นมิตรกับผู้ประมวลรอยแยก เราสามารถใช้ Postcss-Parser เช่น POSCSS-SCSS ด้วยปลั๊กอิน PRECSS แต่วิธีการนี้ใช้ปลั๊กอิน Postcss ที่ยังไม่เสร็จ / ไม่ได้ทำมากมายที่ฟังก์ชั่นการเลียนแบบของ SASS ที่ไม่ดี ฉันพบเวิร์กโฟลว์ที่ดีที่สุดคือ:
สิ่งนี้จะช่วยให้คุณเป็นไวยากรณ์ที่ดีที่สุดของ Preprocessor ที่มีปลั๊กอิน POSTCSS ทั้งหมดที่คุณต้องการ
ตอนนี้สำหรับสิ่งที่ยอดเยี่ยม ตัวประมวลผลล่วงหน้ามักจะมีวิธีการลูปจำนวนครั้งที่ระบุในขณะที่ให้สิ่ง iterator:
@ สำหรับ $ I จาก 1 ถึง 3 {
เนื้อหา: $ I; // ส่งคืนเนื้อหา: 1; เนื้อหา: 2; เนื้อหา: 3;
}
ด้วยความรู้เล็กน้อยเกี่ยวกับตัวประมวลผลล่วงหน้าคุณสามารถเริ่มใช้มดในวิธีที่น่าสนใจจริงๆ ...
$ ขนาด: 100px 1/2 1/2;
$ รางน้ำ: 30px;
$ ความยาว: ความยาว ($ ขนาด);
.Column {
Margin-Right: $ Gutter;
@ สำหรับ $ I จาก 1 ถึง $ ความยาว {
& amp;: nth-child (# {$ length} n + # {$ i}) {
ความกว้าง: ขนาด ($ size) รับ ($ I) รางน้ำ ($ รางน้ำ);
}
}
& amp;: nth-child (# {$ length} n + # {$ length}) {
มาร์จิ้นขวา: 0;
}
}
ตอนนี้คอลัมน์ขนาดที่ไม่สม่ำเสมอของเราห่อเป็นแถวใหม่โดยไม่มีมาร์กอัปเพิ่มเติม ไปข้างหน้าและจัตช์ไปรอบ ๆ ด้วยรหัสนี้ ลองขนาดที่แตกต่างกันในรางน้ำและเพิ่มขนาดใหม่ (เช่น 100px อัตโนมัติ 100px)
นี่คือรูปแบบที่ค่อนข้างธรรมดาที่มีมดดังนั้นฉันจึงห่อมันลงในคุณสมบัติที่ทำงานร่วมกับวานิลลา CSS เช่นกัน:
.grid {
Generate-Grid: ขนาด (100px 1/2 1/2); / * คุณสามารถส่งผ่านตัวเลือกเพิ่มเติม แต่การถอน () ไม่จำเป็นอีกต่อไป * /
}
กริด nth นั้นยอดเยี่ยมมากเมื่อคุณรู้ขนาดและจำนวนองค์ประกอบที่จะผ่านไป แต่บางครั้งคุณก็ต้องการสร้างคอนเทนเนอร์และเพียงแค่ทิ้งองค์ประกอบขนาดสุ่มบางอย่างไว้ในนั้น ในกรณีเหล่านี้ ระยะขอบเชิงลบ กริดเป็นทางออกที่ดีที่สุดของคุณ ผ่านไป ระยะขอบเชิงลบ ถึงมดเช่นนี้:
.grid {
มาร์จิ้น: 0 -15px;
}
.Column {
ความกว้าง: ขนาด (1/3) รับ (1) กริด (ระยะวางลบ);
มาร์จิ้น: 0 15px;
}
ตัวอย่างเหล่านี้เป็นเพียงเหลือบเล็ก ๆ ที่ทุกสิ่งที่ยอดเยี่ยม postcss-ant สามารถทำได้ มันมีพารามิเตอร์เพิ่มเติมสองสามตัวและการจัดการข้อผิดพลาดเชิงพรรณนามากมาย แต่พลังที่แท้จริงของมดคือคุณ
เครื่องมือ 'ใบ้' ที่ส่งคืนข้อมูลเล็กน้อยเป็นเครื่องมือที่ดีที่สุดเสมอเนื่องจากพวกเขานำพลังงานกลับเข้าไปในมือของนักพัฒนา นั่นคือสิ่งที่ postcss-ant ได้รับการออกแบบให้ทำ หากคุณสนใจให้มุ่งหน้าไปที่ corysimmons.github.io/postcsss-ant สำหรับการสาธิตที่ละลายใบหน้าและเอกสารหวาน ๆ
บทความนี้ได้รับการตีพิมพ์ครั้งแรกในฉบับที่ 286 ของนิตยสารสุทธิ ซื้อที่นี่
บทความที่เกี่ยวข้อง:
ต้นกำเนิดของศิลปะ Pin-Up สามารถย้อนกลับไปในช่วงปลายศตวรรษที่ 19 แต่มันก�..
เว็บที่เรารู้ว่ามันมีการเปลี่ยนแปลงและพัฒนา..
ด้วย พื้นที่แตกหัก เป็นสิ่งที่เป็น - เกมต�..
Nadieh Bremer จะอยู่ที่ สร้างลอนดอน ในเด�..