clearでフロートへの隣接を禁止した要素がフロートに重なる
症状
複数のフロートを横に並べているとき、それらの直後にclearプロパティで先行フロートとの隣接を禁止した要素を置くと、その要素のボックスが先行フロートに重なることがある。
例示
<div style="float:left; width:3em; border:2px solid red;">フ1<br>フ1</div> <div style="float:left; width:3em; border:2px solid blue;">フ2</div> <div style="clear:left; background:aqua;">clear</div>
フ1
フ1
フ1
フ2
clear
clearプロパティを指定したdiv要素は、前にある2つのフロートよりも下に置かれるはずです。
スクリーンショット
N7.1での表示
NN4.8での表示
補足
Netscape4は複数のフロートを並べたときに、clearプロパティを「最初のフロート(複数の左フロートが並ぶ場合は左端に置かれるフロート)を除いて最も高さが大きいフロート」にあわせて作用させているようです。従って、最初のフロートの高さの値が最も大きくならないようにすることで重なりを回避することができます。
以下は、2番目のフロートを最も高くする例です。
<div style="float:left; width:3em;">フ1<br>フ1</div> <div style="float:left; width:3em;">フ2<br>フ2<br>フ2</div> <div style="float:left; width:3em;">フ3</div> <div style="clear:left;">clear</div>
フ1
フ1
フ1
フ2
フ2
フ2
フ2
フ2
フ3
clear
修正状況
NN4.8で不具合の発生を確認しました。
関連記事
- 親要素で指定したスタイルが表要素に継承しない
- 親や祖先要素のレイヤーをスクリプトから認識できない
- 特定のスタイルを指定すると省略した終了タグが正しい位置に補われない
- アンカーにボーダーを設定するとアンカーとして機能しなくなる
- 画像アンカーのボーダーを消去できない
- style属性でスタイルを設定するとimg要素の位置がずれる
- マージン、ボーダー、パディングを設定したインライン要素の位置がずれる
- 画像を読み込まない設定下では背景画像と背景色の指定が無効になる
- 要素名に続けて書いた一意セレクタを認識しない
- 改行を挟まない連続した要素で直前の要素のfont-size値がfont-size算出に用いられる
- 実在しない開始タグがstyle属性を含む開始タグの直後に現れる
- line-heightの倍率指定で算出値が継承する
- border-colorの既定値とtransparent値に対応する色が#000000になっている
- head要素と子孫要素のdisplayプロパティを変更できない
- ボーダーとマージンを設定した要素内のフォント指定が無視される
- スタイル適用時にdt, dd, liなどの要素の内容物が無視される
- 背景やボーダーがブロック全体に表示されない
- fontプロパティで文法違反をするとブロック全体のスタイル指定が無視される
- 外部スタイルシート内の相対パスをリンク元文書からの相対パスとして扱う
- 表の背景色塗りつぶしが正常に行われない場合がある
- 存在しない外部スタイルシートを読み込むHTML文書をまったく表示できない
- 特定の条件下では、フレーズ要素を使用したページを表示できない
- ウィンドウをリサイズするとレイヤーの位置がずれる
- 画像が含まれる要素にline-heightを指定すると画像のレイアウトが狂う
- フォント名に2バイト文字が含まれるフォントを指定するとスタイルが無効になる
スポンサーリンク