「なぜdivが画像の全高まで拡大しないのですか?」
フロートはブロックとオーバーラップするため、ブロックフォーマットコンテキストのみにフロートが含まれます。(ここでトピック全体のかなり良い概要を見つけることができます:http ://www.yuiblog.com/blog/2010/05/19/css-101-block-formatting-contexts/ )
手元の問題を解決するために:
はalign=right
実際にはimgになりますfloat: right
(align
属性は非推奨であり、cssを使用する必要があります)。
フロート画像をその親に含めるにはdiv
、親div
にブロックフォーマットコンテキストを確立させる(ブロックフォーマットコンテキストはネストされたフロートを囲む)か、またはimg
としてスタイル設定された後に追加の要素を使用してフロートを明示的にクリアする必要がありますclear: right
。
ブロックフォーマットコンテキストを作成する簡単な解決策は、親div
もフロートすることですが、この場合の私の好ましい解決策は、単に親をに設定するoverflow
ことですhidden
(これもブロックフォーマットコンテキストになります)。
更新されたフィドルhttp://jsfiddle.net/R4bCy/8/をチェックしてください。