わかりました、これを正しくするのは一見不可能です。テキストボックスとセレクトボックスがあります。左マージンと右マージンに整列するように、それらを正確に同じ幅にしたい。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
</select>
</body>
</html>
それでいいと思いますよね?いいえ。Firefox では、選択ボックスが 6px 短くなっています。スクリーンショットを参照してください。
では、コードを編集して 2 つのスタイルを作成しましょう。
<style type="text/css">
input {
width: 200px;
}
select {
width: 206px;
}
</style>
わかりました!
ちょっと待って、Chrome でテストしたほうがいいよ...
すべてのブラウザでこれらを並べる方法を教えてもらえますか? width: 200px だけを実行できないのはなぜですか? すべてのブラウザーで表示が異なるのはなぜですか? また、テキスト ボックスと選択ボックスの高さが異なるのはなぜですか。どうすればそれらを同じ高さにすることができますか? height と line-height を試してみましたが、役に立ちませんでした。
解決:
わかりました、以下の回答からいくつかの助けを借りて解決策を見つけました。重要なのは、box-sizing: border-boxプロパティを使用することです。これにより、境界線とパディングを含む幅を指定するときに使用できます。ここで優れた説明を参照してください。その後、ブラウザはそれを詰め込むことができません。
コードは以下にあり、ボックスの高さを同じサイズに設定し、ボックス内のテキストをインデントして整列させています。また、境界線を設定する必要があります。これは、Chrome が選択ボックスに使用する非常に奇妙に見える境界線を持っているため、配置が失われるからです。これは、HTML5 サイト (IE9、Firefox、Chrome、Safari、Opera などのサポートなど) で機能します。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
border: 1px solid #000;
padding: 0;
margin: 0;
height: 22px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
input {
text-indent: 4px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
<option>123456789 123123123123</option>
<option>123456789 123123123123 134213721381212</option>
</select>
</body>
</html>
入力ボタンやチェックボックスなどをこのスタイリングに含めたくない場合がある最後の警告として、 を使用しinput:not([type='button'])
て特定のタイプに適用しないようにするか、 を使用input[type='text'], input[type='password']
して適用したいタイプを指定します。