私はプロジェクトに取り組んでおり、IE7+ に準拠する必要があります。非常にうまく機能するスタイルがいくつかありますが、IE7 では小さな問題があり、最後のバグはラベルに関するものです。幅は 150px に強制され、ラベルが大きい場合は次の行に続きます。ただし、IE7 では、次のブロックでオーバーライドされます。ここに画像があります:
私が欲しいもの(そしてそれはIE8 +と実際のナビゲーターの結果です):
問題のある CSS を抽出し、ブートストラップを作成しました。
<!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<style type="text/css">
.form_text {
position:relative;
clear:both;
margin:.2em;
padding-left:150px;
}
.form_text label {
position:relative;
*position:absolute;
float:left;
width:140px;
margin:.2em 0 0 -150px;
text-align:right;
}
</style>
</head>
<body>
<p class="form_text">
<label>My label too long to stay on one line</label><input type="text" />
</p>
<p class="form_text">
<label>A normal label</label> <input type="text" />
</p>
</body>
</html>
CSS を切断することで、問題が に起因することがわかりましたが*position:absolute;
、それを削除しても機能しません :
最後に、 も削除できないことはわかってmargin:.2em;
いますが、マージンが大きすぎます。
それで、これを修正する方法はありますか?
できれば、既存の CSS (デモにあるもの) を変更しない方法が欲しいです。しかし、私は好きなだけ追加できます。
編集
可能であれば、長すぎるラベルにクラスを追加しないような解決策が欲しいです。