Inputfield com largura 100% "atinge" no preenchimento
-
14-11-2019 - |
Pergunta
Eu tenho uma toalha de mesa com um campo de entrada. O Inputfield deve preencher o toalha de mesa, mas não alcançar seu preenchimento. O que eu tenho se parece com isso (com firebug):
Eu quero que o Inputfield seja mantido dentro da área azul e não enrole no roxo.
E: Claro que li todas as perguntas aqui neste tópico primeiro. Eu li tudo isso e não consegui encontrar nenhuma resposta que realmente resolva isso.
deve funcionar em todos os navegadores modernos (IE7 também);
Eu fiz um Minimal Exemplo ao vivo Com o JSFiddle onde eu tentei todas as soluções nas outras perguntas Mas eu simplesmente não consegui fazer isso funcionar. a) Existe uma solução de trabalho para isso? e b) Existe uma solução agradável e não comercial para isso?
Por que este é um problema em todos os navegadores? Eu acho que esta é uma especificação errada no CSS. Porque se eu disser "100%", claro, quero que o elemento se encaixe em "100%" da área de conteúdo. qual é o caso de uso para deixá-lo fluir em paixões e margens?
Solução
Well, here you go..
I'm using the exact same method as this answer.
See: http://jsfiddle.net/AKUsB/
CSS:
.inputContainer {
background: #fff;
padding: 3px 3px;
border: 1px solid #a9a9a9
}
.inputContainer input {
width: 100%;
margin: 0; padding: 0; border: 0;
display: block
}
HTML:
<div class="inputContainer">
<input type="text" name="company" id="company" value="" class="formInputTextField" style="width: 100%;" />
</div>
Outras dicas
The problem here is with the box model, when you say width: 100%
it applies a pixel value based on what's available (which you can see under the "computed styles" option of a web inspector). However, padding is then added on to that width, so a padding of 5px would compute to a total width of 100% + 10px (5 for each side).
To fix this problem, you need to remove your padding, or incorporate it into your width value. For example:
input { width: 100%; padding: 0; }
Or
input { width: 90%; padding: 0 5%; } /* width totals 100% */
Most form elements, by default, inherit some amount of padding; so even if you're not specifically applying padding to the input, it's still on there because the browser defaults it to have padding.
I think you should try to use
box-sizing: border-box