Итак, сначала немного мяса, чтобы установить сцену:
HTML
<div id="container">
<div id="inner">test</div>
</div>
CSS
#container {
width:300px;
height:150px;
background-color:#d7ebff;
}
#inner {
width:100%;
height:100%;
padding:5px;
background-color:#4c0015;
opacity:.3;
}
Это приведет к тому, что будет выглядеть во всех современных браузерах:
Теперь я знаю, что это стандартно-совместимое поведение (как я знал раньше, но подтвержденное в этом сообщении, и я также знаю, что если я включу этот код в внутренняя декларация CSS:
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box
... он примет модель "border-box" и получит поведение, которое кажется мне более интуитивным, но я просто попытался логически обосновать рассуждения о том, почему так оно и есть, и я не смог для этого.
Кажется (на первый взгляд) более логичным для меня, чтобы внутренний ящик всегда заполнял контейнер ровно на 100% ширины контейнера, независимо от заполнения или границы внутреннего поля. Я сталкиваюсь с этой проблемой все время, когда я пытаюсь установить ширину текстовой области на 100%, которая имеет границу или что-то вроде внутреннего пространства 4px... текстовое поле всегда будет переполнять контейнер.
Итак, мой вопрос: какова логика установки поведения по умолчанию для игнорирования границы и заполнения элемента при установке его ширины?