На самом деле, это потому, что CSS определяет 100% относительно всей ширины контейнера, включая его поля, границы и отступы; это означает, что пространство пригодится. к его содержанию относится некоторое количество меньше, чем 100%, если контейнер не имеет полей, границ или отступов.
Это нелогично, и многие считают ошибкой то, что мы застряли на . Фактически это означает, что% измерения не годятся для чего-либо, кроме контейнера верхнего уровня, и даже тогда, только если у него нет полей, границ или отступов.
Обратите внимание, что поля, границы и отступы текстового поля включены в указанный для него размер CSS - это контейнер, который отбрасывает вещи.
Я сносно обошел эту проблему, используя 98%, но это далеко не идеальное решение, поскольку поля ввода имеют тенденцию к дальнейшему сокращению по мере увеличения контейнера.
РЕДАКТИРОВАТЬ: Я сталкивался с подобным вопросом - я никогда не пробовал дать ответ , и я не знаю точно, относится ли он к вашей проблеме, но это кажется, что так и будет.