JS/jQuery でフィルタリングできる項目 (製品のサムネイル) の流動的なグリッドがあります。しかし、フィルターを適用した後、左マージンを適切にするための CSS を設定する最良の方法が見つかりません。
私は Twitter Bootstrap を使用しており、サムネイルには標準の余白があります。ここにある例を使用しました: JS フィルターを適用せずにマージンを調整するための小さな変更を加えた Bootstrap のサムネイルのマージンの問題。
CSS:
ul.thumbnails > li:nth-child(1), ul.thumbnails li.span3:nth-child(4n + 5) {
margin-left : 0px;
}
私のマークアップは次のようなものです:
<div class="row-fluid products">
<ul class="thumbnails">
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
<li class="product span3"><!-- product image and info --></li>
</ul>
</div>
<li>
NOW - 一部のアイテムを非表示にする JS でフィルターを適用するまで、これは正常に機能します。class="hide"
(表示されるべきではない各リスト項目に追加してCSSを使用します(表示されますdisplay:none
))。次に、残りのアイテムが間違ったマージンを取得します。たとえば、最初のアイテムが非表示になり、2 番目のアイテムに本来あるべきではない左マージンが残っている場合です。
フィルターを適用した後、CSS を JS で調整することを考えましたが、このコードは機能しません。
$("li.product.span3").css({ 'margin-left': '2.5641%'});
$("li.product.span3:not(.hide):nth-child(1)").css({ 'margin-left': '0'});
$("li.product.span3:not(.hide):nth-child(4n+5)").css({ 'margin-left': '0'});
また、これはさまざまな画面幅とは異なるため、マージンのレスポンシブ設定には対応していません。もちろん、理想的なソリューションは CSS のみです。提案してください...