Alignez verticalement le texte dans le champ entrée de hauteur fixe sans display: table ou de rembourrage?
La propriété line-height prend habituellement soin de l'alignement vertical, mais pas avec les entrées. Est-il un moyen de centrer automatiquement le texte sans avoir à jouer avec rembourrage?
- Sans jouer avec rembourrage? Pas en mon expérience. Si vous souhaitez rendre (presque) la même manière sur tous les navigateurs, j'ai trouvé que l'utilisation de remplissage est nécessaire.
Vous devez vous connecter pour publier un commentaire.
Dans Opera 9.62, Mozilla firefox 3.0.4, Safari 3.2 (pour Windows) il aide, si vous mettez un peu de texte ou au moins un espace dans la même ligne que le champ de saisie.
(imaginez un   après l'entrée-déclaration)
IE 7 ignore tous les CSS hack j'ai essayé.
Je recommande l'utilisation de rembourrage pour IE seulement. Devrait rendre plus facile pour vous de le positionner correctement si elle n'a qu'à travailler au sein d'un navigateur spécifique.
J'ai rencontré ce problème moi-même. J'ai trouvé que de ne pas spécifier une entrée de hauteur, mais à l'aide de la police de la hauteur et de rembourrage combinés, les résultats en alignés verticalement du texte.
Par exemple, disons que vous voulez avoir un 42px haut d'entrée de la boîte, avec une taille de police de 20px. Vous pouvez simplement trouver la différence entre l'entrée de la hauteur et la taille de police, la diviser par deux, et de définir votre rembourrage à ce montant. Dans ce cas, vous auriez 22px valeur totale de rembourrage, qui est 11px sur chaque côté.
Qui vous donnerait un 42px haut d'entrée de la boîte avec un parfait alignement vertical.
Espère que ça aide.
Je n'ai pas essayé moi-même, mais essayez de définir:
Où 36px est à la hauteur de votre entrée.
Je sais je suis en retard à la fête, mais j'espère que cela va aider ceux qui cherchent une réponse concise qui fonctionne dans tous les principaux navigateurs (sauf IE6, nous avons décidé d'arrêter le support de ce navigateur, donc je refuse même de le regarder plus).
cheers!
JP
À mon avis, la réponse sur cette page avec le plus de votes est la meilleure réponse, mais sa mathématiques était mal et je ne pouvais pas commenter.
J'avais besoin d'une zone de saisie de texte pour être exactement 40 pixels de haut, y compris une bande de 1 pixel dans tous les sens. Bien sûr, je voulais le texte verticalement alignés dans le centre dans tous les navigateurs.
Bande de 1 pixel en haut
Bande de 1 pixel en bas
8 pixels de haut rembourrage
8 pixel remplissage en bas
22 pixels taille de la police
1 + 1 + 8 + 8 + 22 = 40 pixels exactement.
Une chose à retenir est que vous devez supprimer de votre css hauteur de biens ou de ces pixels sont ajoutés à votre total ci-dessus.
Cela fonctionne dans Firefox, Chrome, IE 8, et Safari. Je peux seulement supposer que si quelque chose de simple comme cela fonctionne dans IE8, il devrait fonctionner de la même façon dans 6, 7, et 9, mais je ne l'ai pas testé. S'il vous plaît laissez-moi savoir et je vais éditer ce post en conséquence.
I can only assume that if something simple like this is working in IE8, it should work similarly in 6, 7
- il y A BEAUCOUP de choses très simples (par des normes d'aujourd'hui au moins) que le travail (même si les demi-assedly) dans IE8, mais sont impossibles dans IE6, ou même 7. Pour rappel, IE6 ne prend pas en charge autant queposition: fixed
ou même transparent Png.c'est la bonne façon de fixer à la verticale-en position intermédiaire.
Essayer :
Parce que sur certaines versions d'IE (< 9) la propriété de la hauteur n'est pas correctement interprété.
Après beaucoup de recherches et de frustration qu'un combo de réglage de hauteur de, hauteur de ligne et pas de rembourrage a fonctionné pour moi lors de l'utilisation d'une hauteur fixe (24px) image d'arrière-plan pour un champ de saisie de texte.
Aller pour
line-height
.La
vertical-align
balise fonctionne très bien pour le bouton soumettre, mais pas pour le texte dans le champ de saisie.Réglage
line-height
à la hauteur de la zone de saisie fonctionne sur tous les navigateurs. Incl IE7.Il suffit de ne pas régler la hauteur de la zone de saisie, définir la taille de police, qui sera ok
C'est comment je le fais.
puis à l'intérieur de votre fichier CSS,
Qui devrait fonctionner pour vous.
La fin de la partie, mais le courant les réponses ne fonctionnera pas si vous avez box-sizing: border-box set (dont beaucoup de gens ne pour former des éléments de ces jours).
Juste réinitialiser la zone de la taille pour IE8 pour
box-sizing: content-box;
puis utilisez l'une des padding /hauteur de la réponse.L'intérieur de l'alignement vertical dépendra de la hauteur de la police et de l'entrée de hauteur, donc, il peut être ajusté à l'aide de rembourrage !!!
Essayer certains l'aiment :
...
N'oubliez pas d'ajuster les valeurs de la classe css en fonction de vos besoins !
Désolé à l'avance la réponse simple...
Juste retirer votre titre de texte et l'utilisation de l'entrée de l'espace réservé pour votre étiquette de titre. Certains visuels et de travail css et votre formulaire sera tendue et conviviale. Je suis conscient des inconvénients, mais ce ne sera totalement soulager l'alignement de la lutte.
Je suis réellement à la construction d'un maintenant qui comprend plusieurs étapes et css barre de progression dans WordPress...basé sur le très populaire Formulaire de Contact 7 plugin et il semble grand. Laissez-moi savoir si vous voulez une capture d'écran.
Cheers!
LaddtheImpaler
Si votre élément est un élément de bloc contenu/ou avec l'affichage comme suit:
Ou, avec une ligne fixe-hauteur, vous pouvez définir la verticale aligner comme suit:
Il ne fonctionnera pas pour les autres cas, mais il fonctionne très bien sur ces conditions.
display: table-cell
, ou des blocs avec un fixeline-height
.