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

多くの場合、サイトをレイアウトするとき、可変幅のあるコンテナに同じ幅で異なる高さのブロックを配置することが必要になります(ゴムを読む)。 さらに、このリストにフィルターを適用できます。これにより、 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.スクリーンショット-将来の母親向けオンラインストアポータル



All Articles