СвойÑÑво box-sizing Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð¾Ð´Ð½Ð¾ из двÑÑ
знаÑений â border-box или content-box. РзавиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного знаÑÐµÐ½Ð¸Ñ Ð±ÑаÑÐ·ÐµÑ Ð¿Ð¾-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ ÑÑакÑÑÐµÑ Ð·Ð½Ð°Ñение ÑвойÑÑв width/height.
ÐнаÑÐµÐ½Ð¸Ñ box-sizing
content-box- ÐÑо знаÑение по ÑмолÑаниÑ. Ð ÑÑом ÑлÑÑае ÑвойÑÑва
width/heightобознаÑаÑÑ Ñо, ÑÑо Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð²Ð½ÑÑÑиpadding. border-box- ÐнаÑениÑ
width/heightзадаÑÑ Ð²ÑÑоÑÑ/ÑиÑÐ¸Ð½Ñ Ð²Ñего ÑлеменÑа.
ÐÐ»Ñ Ð±Ð¾Ð»ÑÑей наглÑдноÑÑи поÑмоÑÑим на каÑÑÐ¸Ð½ÐºÑ ÑÑого div в завиÑимоÑÑи Ð¾Ñ box-sizing:
/*+ no-beautify */
div {
width: 200px;
height: 100px;
box-sizing: border-box (ввеÑÑ
Ñ) | content-box (внизÑ);
padding: 20px;
border:5px solid brown;
}
РвеÑÑ
нем ÑлÑÑае бÑаÑÐ·ÐµÑ Ð½Ð°ÑиÑовал веÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑазмеÑом в width x height, в нижнем â инÑеÑпÑеÑиÑовал width/height как ÑазмеÑÑ Ð²Ð½ÑÑÑенней облаÑÑи.
ÐÑÑоÑиÑеÑки ÑложилоÑÑ Ñак, ÑÑо по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑинÑÑ content-box, а border-box некоÑоÑÑе бÑаÑзеÑÑ Ð¸ÑполÑзÑÑÑ ÐµÑли не Ñказан DOCTYPE, в Ñежиме ÑовмеÑÑимоÑÑи.
Ðо еÑÑÑ ÐºÐ°Ðº минимÑм один ÑлÑÑай, когда Ñвное Ñказание border-box Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾: ÑаÑÑÑгивание ÑлеменÑа до ÑиÑÐ¸Ð½Ñ ÑодиÑелÑ.
ÐÑимеÑ: подÑÑÑоиÑÑ ÑиÑÐ¸Ð½Ñ Ðº ÑодиÑелÑ
ÐадаÑа: подогнаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾ ÑиÑине внеÑнего ÑлеменÑа, ÑÑÐ¾Ð±Ñ Ð¾Ð½ заполнÑл вÑÑ ÐµÐ³Ð¾ пÑоÑÑÑанÑÑво. Ðез пÑивÑзки к конкÑеÑÐ½Ð¾Ð¼Ñ ÑазмеÑÑ ÑлеменÑа в пикÑелÑÑ .
ÐапÑимеÑ, Ð¼Ñ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ ÑлеменÑÑ ÑоÑÐ¼Ñ Ð½Ð¸Ð¶Ðµ бÑли одинакового ÑазмеÑа:
<style>
form {
width: 200px;
border: 2px solid green;
}
form input,
form select {
display: block;
padding-left: 5px;
/* padding Ð´Ð»Ñ ÐºÑаÑоÑÑ */
}
</style>
<form>
<input>
<input>
<select>
<option>опÑии</option>
</select>
</form>
Ðак ÑделаÑÑ, ÑÑÐ¾Ð±Ñ ÑлеменÑÑ ÑаÑÑÑнÑлиÑÑ ÑÑÑко по ÑиÑине FORM? ÐопÑобÑйÑе добиÑÑÑÑ ÑÑого ÑамоÑÑоÑÑелÑно, пеÑед Ñем как ÑиÑаÑÑ Ð´Ð°Ð»ÑÑе.
ÐопÑÑка width:100%
ÐеÑвое, ÑÑо пÑиÑ
Ð¾Ð´Ð¸Ñ Ð² Ð³Ð¾Ð»Ð¾Ð²Ñ â поÑÑавиÑÑ Ð²Ñем ÑлеменÑам INPUT ÑиÑÐ¸Ð½Ñ width: 100%.
ÐопÑобÑем:
<style>
form {
width: 200px;
border: 2px solid green;
}
form input, form select {
display: block;
padding-left: 5px;
width: 100%;
}
</style>
<form>
<input>
<input>
<select><option>опÑии</option></select>
</form>
Ðак видно, не полÑÑаеÑÑÑ. ÐлеменÑÑ Ð²ÑлезаÑÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ ÑодиÑелÑ.
ÐÑиÑина â ÑиÑина ÑлеменÑа 100% по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑноÑиÑÑÑ Ðº внÑÑÑенней облаÑÑи, не вклÑÑаÑÑей padding и border. То еÑÑÑ, внÑÑÑеннÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ ÑаÑÑÑгиваеÑÑÑ Ð´Ð¾ 100% ÑодиÑелÑ, и к ней ÑнаÑÑжи пÑибавлÑÑÑÑÑ padding/border, коÑоÑÑе и вÑлезаÑÑ.
ÐÑÑÑ Ð´Ð²Ð° ÑеÑÐµÐ½Ð¸Ñ ÑÑой пÑоблемÑ.
РеÑение: дополниÑелÑнÑй ÑлеменÑ
Ðожно ÑбÑаÑÑ padding/border Ñ ÑлеменÑов INPUT/SELECT и завеÑнÑÑÑ ÐºÐ°Ð¶Ð´Ñй из ниÑ
в дополниÑелÑнÑй DIV, коÑоÑÑй бÑÐ´ÐµÑ Ð¾Ð±ÐµÑпеÑиваÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½:
<style>
form {
width: 200px;
border: 2px solid green;
}
/* ÑбÑаÑÑ padding/border */
form input,
form select {
padding: 0;
border: 0;
width: 100%;
}
/* внеÑний div даÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½ */
form div {
padding-left: 5px;
border: 1px solid black;
}
</style>
<form>
<div>
<input>
</div>
<div>
<input>
</div>
<div>
<select>
<option>опÑии</option>
</select>
</div>
</form>
РпÑинÑипе, ÑÑо ÑабоÑаеÑ. Ðо нÑÐ¶Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑлеменÑÑ. РеÑли Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ деÑево или болÑÑÑÑ ÑедакÑиÑÑемÑÑ ÑаблиÑÑ, да и вообÑе â лÑбой инÑеÑÑейÑ, где ÑлеменÑов и Ñак много, Ñо лиÑние нам ÑоÑно не нÑжнÑ.
ÐÑоме Ñого, Ñакое ÑеÑение заÑÑавлÑÐµÑ Ð¿Ð¾Ð¶ÐµÑÑвоваÑÑ Ð²ÑÑÑоеннÑм в бÑаÑÐ·ÐµÑ Ð´Ð¸Ð·Ð°Ð¹Ð½Ð¾Ð¼ ÑлеменÑов INPUT/SELECT.
РеÑение: box-sizing
СÑÑеÑÑвÑÐµÑ Ð´ÑÑгой ÑпоÑоб, гоÑаздо более еÑÑеÑÑвеннÑй, Ñем пÑедÑдÑÑий.
ÐÑи помоÑи box-sizing: border-box Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑказаÑÑ Ð±ÑаÑзеÑÑ, ÑÑо ÑиÑина, коÑоÑÑÑ Ð¼Ñ ÑÑавим, оÑноÑиÑÑÑ Ðº ÑлеменÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, вклÑÑÐ°Ñ border и padding:
<style>
form {
width: 200px;
border: 2px solid green;
}
form input, form select {
display: block;
padding-left: 5px;
box-sizing: border-box;
width: 100%;
}
</style>
<form>
<input>
<input>
<select><option>опÑии</option></select>
</form>
ÐÑ ÑоÑ
Ñанили «ÑоднÑÑ» ÑÐ°Ð¼ÐºÑ Ð²Ð¾ÐºÑÑг INPUT/SELECT и не добавили лиÑниÑ
ÑлеменÑов. ÐÑÑ Ð·Ð°Ð¼ÐµÑаÑелÑно.
СвойÑÑво box-sizing поддеÑживаеÑÑÑ Ð² IE наÑÐ¸Ð½Ð°Ñ Ñ Ð²ÐµÑÑии 8.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)