Ok, sabemos que a definição de preenchimento para um objeto faz com que sua largura seja alterada, mesmo que definida explicitamente. Embora se possa argumentar a lógica por trás disso, isso causa alguns problemas com alguns elementos.
Na maioria dos casos, você apenas adiciona um elemento filho e o preenchimento ao elemento, em vez do conjunto definido como 100%, mas para entradas de formulário, essa não é uma etapa possível.
Dê uma olhada no seguinte: http://sandman.net/test/formcss.html
A segunda entrada tem seu preenchimento definido para 5px, que eu prefiro muito à configuração padrão. Infelizmente, isso faz com que a entrada aumente 10px em todas as direções, incluindo a adição de 10px à largura de 100%.
O problema aqui é que não consigo adicionar um elemento filho dentro da entrada, portanto não posso corrigi-lo. Então a questão é:
Existe alguma maneira de adicionar preenchimento dentro da entrada, mantendo a largura 100%? Ele precisa ser 100%, pois os formulários serão renderizados em pais de largura diferente, então eu não sei de antemão a largura do pai.
box-sizing
atributo CSS3