これは、PostCSS を使用してマージンを使用してフレックス ギャップをエミュレートする純粋な CSS ポリフィルです。
margin: auto
またはbackground
使用する場合は、ラッパー div を使用する必要があります。実際のポリフィルのさまざまなテスト ケースについては、デモ ページをご覧ください。
. 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
の場合、ポリフィルはdisplay: flex | inline-flex
とgap
同じルールで使用されます。追加のルールに一致するセレクターの配列を提供します。 strings
またはregexes
を使用できます。ポリフィルを手動で適用するには、ルール内に/* apply fgp */
含めます。
flexGapNotSupported
タイプ: 文字列デフォルト: false
JavaScript による検出でフレックス ギャップがサポートされていない場合に使用するセレクターを手動で指定します (例: flexGapNotSupported: '.flex-gap-not-supported'
。
webComponents
タイプ: ブール値 デフォルト: false
true
ポリフィルの場合、スロット要素もターゲットになります