繰り返しブロックのレイアウト

多くの場合、サイトをレイアウトするとき、可変幅のあるコンテナに同じ幅で異なる高さのブロックを配置することが必要になります(ゴムを読む)。 さらに、このリストにフィルターを適用できます。これにより、 JSはリストの要素を隠したり表示したりしますが、「行」、レイアウト、またはフォームホールを破壊してはいけません。 最も単純な例は製品カタログです。



morfi一緒に、不必要な問題なしにそのようなコンテンツを公開できる多かれ少なかれ普遍的なソリューションを作ることにしました。 重要な点は、ブロックの高さが、たとえばタイトルの高さ、またはレイアウト内にある場合は説明に依存する可能性があることです。

2つの落とし穴があります。 1つ目は、ブロック間のギャップです。 float:left; margin-right |bottom:50px置くだけの場合float:left; margin-right |bottom:50px float:left; margin-right |bottom:50px (構文を簡略化)、「行」の最後の要素は常にインデントされるため、コンテナーの境界線上にはっきりと表示されることはありません。

floatが表面にあるソリューション:

  1. 要素をfloat:left; margin-top |left:50px設定しますfloat:left; margin-top |left:50px float:left; margin-top |left:50px
  2. 要素を別のコンテナでラップし、 margin-top |left:-50px負のインデントを設定し、外側のコンテナ(オリジナル)をラッパー、内側のコンテナをコンテナと呼びます。
  3. IEと仲良くするには、コンテナとラッパーにzoom:1を割り当てて、 float要素から崩壊しないようにする必要がありますoverflow:hidden
  4. IEの場合は、 display:inlineを指定する必要がありdisplay:inlineブロックの場合はdisplay:inline 、それ以外の場合は二重のmarginが得られmargin

すべてがうまくいきますが、そのような状況では、ブロックの高さが大きく異なる可能性がある場合、そのような妨害が発生する可能性があります:



ブロック3、4、および5に注意してください。 緑のブロックはラッパー、青はコンテナです。

論理的には、状況は理解できます-ユニットは、それが配置されている線(または「線」)を描画する必要があります。 この動作はdisplay: inline-block典型的なものですdisplay: inline-block

このソリューションを実行するには、次のものが必要です。

  1. 再び上記の例のようにmarginを設定します
  2. 汎用性のあるクロスブラウザーdisplay:- moz-inline-box ; display: inline-block ; *zoom:1; *display:inlineデザインをdisplay:- moz-inline-box ; display: inline-block ; *zoom:1; *display:inline配布しdisplay:- moz-inline-box ; display: inline-block ; *zoom:1; *display:inline display:- moz-inline-box ; display: inline-block ; *zoom:1; *display:inline
  3. 水平距離が必要な50pxより少し大きいことが50pxこれは、 inline-block間のギャップが原因 inline-block
  4. スペースを扱うには、その幅を測定します4pxを取得16px ます 。これは1em 25%で、 デフォルトでは1em です 。 したがって、 word-spacing :-0.25em設定し、 word-spacing :-0.25em word-spacing :normalます
  5. IEの場合、 text-align :topブロックも登録する必要があります。登録しない場合、要素はベースラインに揃えられます。



バグは確認されていません。解決策はクロスブラウザです。 インラインメソッドは、コンテナのtext-align :centerにあるtext-align :center配置に冷静に耐えtext-align :centerスクリーンショットを参照)。 text-align :leftを設定することを覚えておく必要がありtext-align :leftブロックに戻ります( style. css参照してくださいstyle. css私はそこにコメントしました)。

作業例は、 http//test.dis.dj/blocks/で入手できます。

追伸 :このソリューションは新しいものではありませんが、どのような場合でも有用です。

P. P. S.スクリーンショット-将来の母親向けオンラインストアポータル

Source: https://habr.com/ru/post/J75905/


All Articles