たくさんのfloat: left
要素がありますが、いくつかは他のものより少し大きいです。改行を解除して、より大きな要素に引っかかるのではなく、画像を左端までフロートさせます。
ここに私が話しているページがあります: link
美しく機能する場合、それらがすべて同じサイズの場合: link
ありがとう! (私がする必要がない場合、私はむしろJavaScriptまたはサーバー側のスクリプティングに入りません)
float
宣言を本当に使用する必要がある場合、2つのオプションがあります。
clear: left
を使用します-固定列数になるという欠点がありますheight
でアイテムを等しくするこれらの両方は、フロートがどのように機能するかを回避するため、制限されています。ただし、float
の代わりにdisplay: inline-block
の使用を検討することもできます。これにより、同様のレイアウトが実現します。その後、vertical-align
を使用して配置を調整できます。
float:left
を削除し、代わりにdisplay:inline-block
を追加して修正しました。画像には使用していませんが、うまく機能するはずです。
つかいます display:inline-block
vertical-align: top
または vertical-align:middle
便利。
これは私がやったことです。新しい行を強制することで動作しているようですが、私はHTML/CSSの第一人者ではありません。
<p> </p>
それらをdivでラップし、divに設定された幅(おそらく最も広い画像の幅+マージン?)を与えてから、divをフロートさせることができます。次に、それらを含むdivの中心に画像を設定します。画像間のマージンは、異なるサイズの画像に対して一貫していませんが、ページ上でよりきれいにレイアウトされます。
追加 .icons div {width:160px; height:130px;}
は非常にうまく機能します
それが役立つことを願っています
これは古い投稿であり、リンクは有効ではありませんが、検索の早い段階で表示されたため、他の人が問題をよりよく理解できるようにコメントする必要があると考えました。
フロートを使用すると、コントロールを自動的に配置するようブラウザに要求します。コントロールが指定されたフロート配置の幅に収まらない場合、折り返しによって応答します。 float:left、float:rightまたはclear:left、clear:right、clear:both。
したがって、float:leftアイテムの束を1つの左列に均一にフロートさせたい場合は、同じ幅でラップ/アンラップすることをブラウザに決定させる必要があります。スクリプティングを行いたくないので、フロートするすべてのコントロールを1つのdivにラップできます。次のようなクラスで新しいラッピングdivを追加します。
.LeftImages{
float:left;
}
html
<div class="LeftImages">
<img...>
<img...>
</div>
このdivは最大の画像の幅に自動的に調整され、すべての画像は常にdivとともに左にフロートされます(ラッピングなし)。
それでも折り返したい場合は、divにwidth:30%のような幅を与え、各画像にfloat:leftを指定できます。スタイル。最大の画像に調整するのではなく、サイズが異なり、含まれる画像をラップできます。