以下のコードは、FF では送信ボタンを独自の行に配置し、IE では同じ行に配置するのはなぜですか?
<style type="text/css">
#div1 form input.submit {display:block;}
</style>
<div id="div1">
<form>
hi
<input type="submit" class="submit" value="hello there">
</form>
</div>
以下のコードは、FF では送信ボタンを独自の行に配置し、IE では同じ行に配置するのはなぜですか?
<style type="text/css">
#div1 form input.submit {display:block;}
</style>
<div id="div1">
<form>
hi
<input type="submit" class="submit" value="hello there">
</form>
</div>
これが発生する理由は、<body>
開始タグがないためです。開始タグが HTML に明示的に含まれていない場合<body>
、IE (少なくとも 6) はドキュメント ツリーを誤ってレンダリングし、form
要素を含むセレクターは正しく機能しません。
ここで、 body タグを追加すると機能します。
昨日、ほぼ同じバグを文書化しました。body タグが欠落しているフォームがスタイルできないだけでなく、セレクターにある場合はスタイルできない他の要素を説明するために、説明を更新する必要があるようです。
Doctororange が指摘するようform
に、セレクターでも指定しないことでこれを回避できますが、タグを挿入することをお勧めします<body>
。
ie6 でテストしている場合は、次を試してください。
#div1 form .submit {display:block;}
IE は Web 標準に準拠していないためです。
form
少なくとも三重にネストされたセレクターでは、セレクターが邪魔になっているように見えます。
これは機能します:
#div1 input.submit{
display:block;
}
これは機能します:
form input.submit{
display:block;
}
これはしません:
#div1 form input.submit{
display:block;
}