Je pense que la solution la plus simple est d'utiliser box-sizing: border-box
sur le <input\>
de l'élément et l'ensemble de ses width: 100%
. Évolution box-sizing
modifie la façon dont l' width
attribut est appliqué. Maintenant, width
est défini par la zone de bordure de l'élément, de ne pas la boîte intérieure.
En d'autres termes, si votre entrée est de rembourrage, l'élément ne sera pas de débordement de ses parents car le changement de box-sizing
a modifié la définition de la largeur d'inclure le rembourrage et des frontières, et pas seulement la partie intérieure de l'élément.
Cela semble être la façon dont Bootstrap t-il.
Par exemple:
HTML
<form method="post">
<input type="text" />
</form>
CSS
form {
width: 500px;
padding: 10px 30px;
border: 1px solid black;
}
input {
width: 100%;
box-sizing: border-box;
padding: 10px 50px;
}
Voici le résultat de ce HTML/CSS
JS Fiddle Lien
Facile comme bonjour. Si vous souhaitez remplir entièrement le formulaire parent, il suffit de retirer son rembourrage!