2015/06/01
【CSS】フォームのテキストエリア、テキストボックス、プルダウンボックス等のサイズを揃えるにはbox-sizing を使うと便利
フォームのテキストエリア、テキストボックス、プルダウンボックス等の各部品の横幅をCSSで指定しても、ブラウザによって表示が上手く揃わずニントモカントモ・・・
って感じだったのがやっと解決したので備忘録。
widthだけでは揃わない
とりあえずサンプルを。
<style type="text/css"> .sample1_1{ width:250px; margin:10px 0px 10px 0px; } .sample1_2{ width:250px; height:100px; resize:none; margin:10px 0px 10px 0px; } </style> <form> <select name="" class="sample1_1"> <option value="" selected>hyde</option> <option value="">ken</option> <option value="">tetsuya</option> <option value="">yukihiro</option> </select><br> <input type="text" name="" class="sample1_1"><br> <textarea name="" class="sample1_2"></textarea> </form>
各要素のサイズを同じ数値で指定しても、ブラウザによって表示が揃わなかったりします。
特に横幅に差が出るのが気になります。
width や height と併せて box-sizing:border-box; を記述する
こういった場合は、各要素 width や height と併せて、
box-sizing:border-box;
を指定してやると上手く出来ます。
<style type="text/css"> .sample2_1{ width:250px; box-sizing:border-box; margin:10px 0px 10px 0px; } .sample2_2{ width:250px; height:100px; box-sizing:border-box; resize:none; margin:10px 0px 10px 0px; } </style> <form> <select name="" class="sample2_1"> <option value="" selected>hyde</option> <option value="">ken</option> <option value="">tetsuya</option> <option value="">yukihiro</option> </select><br> <input type="text" name="" class="sample2_1"><br> <textarea name="" class="sample2_2"></textarea> </form>
box-sizing プロパティとは
box-sizing プロパティとはボックスサイズ(width,height)の算出方法を指定する際に使用するプロパティです。
指定可能な値は、
- content-box: padding と border の幅を要素の幅と高さに含めない。デフォルト値。
- border-box: padding と border の幅を要素の幅と高さに含める。
といった感じです。
あとがき
使ってみて分かったのですが、これめちゃくちゃ便利です。
もう box-sizing: border-box; をデフォルト値と考えて使っても良いかもです。