2010-09-17 6 views
5

J'essaie d'obtenir une étiquette alignée avec la ligne de base de la première ligne de texte dans une zone de texte.Alignement vertical avec la ligne de base et les zones de texte

La tentative naïve:

<div style="vertical-align: baseline; display: inline-block"> 
    <label for="comments">Comments:</label> 
</div> 
<div style="vertical-align: baseline; display: inline-block"> 
    <textarea name="comments" id="comments"></textarea> 
</div> 

résultats dans l'étiquette étant aligné avec le fond de la zone de texte. Je préférerais l'avoir alignée avec la ligne première de la zone.

Merci.

+0

Les tailles de police de l'étiquette et de la zone de texte sont-elles les mêmes? –

Répondre

0

Vous devez mettre le labeldiv à l'intérieur du même div que le textarea, alors, si vous le voulez réglé sur le haut de la textarea que vous cherchez vertical-align: top, pas baseline.

Voir et par exemple ici:
http://jsfiddle.net/anhus/

+0

Le problème est que je veux que le texte soit aligné sur la ligne de base du texte dans la zone de texte. L'alignement vers le haut uniquement pour les zones de texte semble incorrect lorsque vous le comparez au reste de l'étiquette + les champs de texte alignés sur la ligne de base. – jmo

+0

Ok, bien, change juste 'vertical-align: top' pour ce que tu veux qu'il soit. base, ou autre. – Robert

+2

-1: manque le point. Il veut aligner la ligne de base de l'étiquette avec la * première * ligne de base du textarea, qui est la chose typographiquement correcte. Je n'ai toujours pas trouvé un bon moyen de le faire - il apparaît chaque fois que ce que vous étiquetez a des mesures de texte différentes. –

2

Le problème est que la zone de texte est considéré comme un bloc, comme une image. Lorsque vous effectuez un alignement vertical, il utilise la bordure pour déterminer le placement à la place du texte. Dans l'exemple ci-dessous, vous pouvez voir que l'étiquette et div sont positionnés en fonction du texte à l'intérieur, où la zone de texte se comporte comme l'image.

http://jsfiddle.net/kenearley/nGaQs/3/

Je pense que la seule façon d'obtenir l'étiquette et textarea pour aligner la façon dont vous voulez est de faire un alignement vertical: haut, puis faire rapport que votre taille de police et la hauteur de ligne match de haut droite.

+0

Et en regardant plus loin, vous pouvez voir que l'utilisation de la ligne de base ne fonctionne même pas avec deux éléments de niveau bloc comme le label et div. L'étiquette est alignée à la dernière ligne dans la div. –

+0

Merci! Utile pour moi. – Boyang

Questions connexes