Это потому, что с граница и отступ добавляются к ширине (как и в большинстве других элементов).При
Вы можете обойти это, увеличив ширину, чтобы учесть это, если вы знаетеширина в пикселях:
input { width: 200px; padding: 10px; border-width:5px; }
select { width: 230px; padding: 10px; border-width:5px; }
Или (если вы можете полагаться на поддержку браузера) вы можете использовать новое свойство CSS3 для определения размера блоков, чтобы они работали согласованно, а также рисовать отступы и границы за пределами ширины элемента:
input, select {
width: 200px;
padding: 10px;
border-width:5px;
-webkit-box-sizing: content-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: content-box; /* Firefox, other Gecko */
box-sizing: content-box; /* Opera/IE 8+ */
}
В качестве альтернативы, вы можете установить box-sizing в border-box, чтобы входы вели себя как выделения, с заполнением, нарисованным внутри ширины поля.
Протестировано в ChromeIE8, FF