Pourquoi est - display:block;width:auto;
sur ma saisie de texte se comportent pas comme un div et de remplir la largeur du conteneur? J'étais sous l'impression qu'un div est simplement un élément de bloc automatique de la largeur. Dans le code suivant ne devrait pas la div et l'entrée ont des dimensions identiques?
Comment puis-je obtenir l'entrée pour remplir la largeur. 100% de largeur ne fonctionnera pas parce que l'entrée a de rembourrage et une bordure (provoquant une largeur finale de 1px + 5px + 100% + 5px + 1px). Des largeurs fixes ne sont pas une option, je suis à la recherche de quelque chose de plus souple.
Je préfère une réponse directe à une solution de contournement, cela semble être une CSS caprice et de la compréhension, il peut être utile plus tard.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
EDIT: je tiens à souligner que j'peuvent déjà le faire avec wrapper solutions de contournement. En dehors de cette vissage avec la page de la sémantique et de sélecteur CSS relations que j'essaie de comprendre la nature du problème et si il peut être dépassé par l'évolution de la nature de l'ENTRÉE elle-même.
EDIT 2: Ok, c'est VRAIMENT étrange! J'ai trouvé que la solution est de simplement ajouter max-width:100%
d'une entrée avec width:100%;padding:5px;
. Cependant, cela soulève encore plus de questions (qui je vais demander à une autre question), mais il semble que la largeur utilise la normale du modèle de boîte CSS et max-width utilise IE border-box modèle. La façon très étrange.
EDIT 3: Ok, ce dernier semble être un bogue dans FF3. IE8 et Safari4 limiter le max-width à 100% + padding + border qui est ce que la spec dit de faire. Enfin, c'est à dire quelque chose de droit.
EDIT 4: Oh mon dieu, c'est génial! Dans le processus de jouer avec cela, et avec beaucoup d'aide de la vénérable gourous de Dean Edwards et Erik Arvidsson, j'ai réussi à réunir le 3 séparée des solutions pour faire un vrai cross-browser 100% de largeur sur des éléments arbitraires de rembourrage et de frontières. Voir la réponse ci-dessous. Cette solution ne nécessite pas de supplément de balisage HTML, juste une classe (ou le sélecteur) et une option de comportement pour l'héritage IE.