นี่คือ CSS polyfill ล้วนๆ โดยใช้ PostCSS เพื่อจำลองช่องว่างแบบยืดหยุ่นโดยใช้ระยะขอบ
margin: auto
หรือ background
ดูหน้าสาธิตสำหรับกรณีทดสอบต่างๆ ของโพลีฟิลที่ใช้งานจริง
. container {
display : flex;
gap : 40 px ;
}
กลายเป็น:
/* Output simplified for purpose of example */
. container > * {
--fgp-parent-gap-row : 40 px ;
--fgp-parent-gap-column : 40 px ;
--fgp-margin-top : calc ( var ( --fgp-gap-row ) + var ( --orig-margin-top , 0 px ));
--fgp-margin-left : calc (
var ( --fgp-gap-column ) + var ( --orig-margin-left , 0 px )
);
margin-top : var ( --fgp-margin-top );
margin-left : var ( --fgp-margin-left );
}
. container {
--fgp-gap : var ( --has-fgp , 40 px );
--fgp-gap-row : 40 px ;
--fgp-gap-column : 40 px ;
--fgp-margin-top : calc (
var ( --fgp-parent-gap-row , 0 px ) - var ( --fgp-gap-row ) + var ( --orig-margin-top , 0 px )
);
--fgp-margin-left : calc (
var ( --fgp-parent-gap-column , 0 px ) - var ( --fgp-gap-column ) + var ( --orig-margin-left , 0 px )
);
display : flex;
gap : var ( --fgp-gap , 0 px );
margin-top : var ( --fgp-margin-top , var ( --orig-margin-top ));
margin-left : var ( --fgp-margin-left , var ( --orig-margin-left ));
}
โพลีฟิลจำลองช่องว่างแบบยืดหยุ่นโดยการเพิ่มระยะขอบให้กับแต่ละองค์ประกอบลูก และใช้ระยะขอบติดลบกับคอนเทนเนอร์
display: flex
และ gap
ในกฎเดียวกันหรือไม่ (ดูตัวเลือกสำหรับวิธีเพิ่มประสิทธิภาพ)margin: auto
หรือ background
)gap
, row-gap
และ column-gap
รองรับเบราว์เซอร์สมัยใหม่ทั้งหมดในปัจจุบัน, Edge, Firefox, Chrome, Safari, Opera (เบราว์เซอร์ใด ๆ ที่รองรับ calc()
และ var()
)
เพิ่ม Flex Gap Polyfill ในโครงการของคุณ:
npm install flex-gap-polyfill postcss --save-dev
ใช้ Flex Gap Polyfill เพื่อประมวลผล CSS ของคุณ:
const flexGapPolyfill = require ( "flex-gap-polyfill" ) ;
flexGapPolyfill . process ( YOUR_CSS /*, processOptions, pluginOptions */ ) ;
หรือใช้เป็นปลั๊กอิน PostCSS:
const postcss = require ( "postcss" ) ;
const flexGapPolyfill = require ( "flex-gap-polyfill" ) ;
postcss ( [ flexGapPolyfill ( /* pluginOptions */ ) ] ) . process (
YOUR_CSS /*, processOptions */
) ;
only
ประเภท : อาร์เรย์ ค่าเริ่มต้น : ไม่ได้กำหนด
เมื่อ true
Polyfill จะใช้เฉพาะเมื่อ display: flex | inline-flex
และ gap
ถูกใช้ในกฎเดียวกัน ระบุอาร์เรย์ของตัวเลือกเพื่อให้ตรงกับกฎเพิ่มเติม อาจเป็น strings
หรือ regexes
รวม /* apply fgp */
ภายในกฎเพื่อใช้ Polyfill ด้วยตนเอง
flexGapNotSupported
ประเภท : สตริง ค่า เริ่มต้น : เท็จ
ระบุตัวเลือกด้วยตนเองเพื่อใช้เมื่อการตรวจจับผ่าน JavaScript ไม่รองรับ Flex Gap เช่น flexGapNotSupported: '.flex-gap-not-supported'
webComponents
ประเภท : บูลีน ค่าเริ่มต้น : false
เมื่อโพลีฟิลล์ true
จะกำหนดเป้าหมายองค์ประกอบที่มีรูพรุนด้วย