2010-09-17 16 views
5

Estoy tratando de alinear una etiqueta con la línea de base de la primera línea de texto en un área de texto.Alineación vertical con línea de base y áreas de texto

El ingenuo intento:

<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> 

resultados en la etiqueta estando alineados con la parte inferior del área de texto. Preferiría que se alineara con la primera línea del área.

Gracias.

+0

¿Los tamaños de fuente para la etiqueta y el área de texto son los mismos? –

Respuesta

0

Es necesario poner el labeldiv interior de la misma div como el área de texto y, a continuación, si lo desea establece en la parte superior de la textarea estás buscando vertical-align: top, no baseline.

Vista y el ejemplo aquí:
http://jsfiddle.net/anhus/

+0

El problema es que quiero que el texto se alinee en la línea de base del texto en el área de texto. Alinearlo a la parte superior solo para las áreas de texto se ve mal cuando lo compara con el resto de los campos de etiqueta + texto que están alineados con la línea de base. – jmo

+0

De acuerdo, bien simplemente cambie 'vertical-align: top' a lo que quiere que sea. línea de base, o lo que sea. – Robert

+2

-1: pierde el punto. Él quiere alinear la línea de base de la etiqueta con la línea de base * first * de la zona de texto, que es lo correcto tipográficamente. Todavía no he encontrado una buena manera de hacerlo, aparece cada vez que lo que está etiquetando tiene diferentes métricas de texto. –

2

El problema es que el área de texto es visto como un bloque, como una imagen. Al hacer una alineación vertical, está utilizando el borde para determinar la ubicación en lugar del texto. En el siguiente ejemplo, puede ver que la etiqueta y el div se ubican en función del texto dentro, donde el área de texto se comporta como la imagen.

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

Creo que la única manera de conseguir la etiqueta y el área de texto para alinear la forma en que desea es hacer una vertical-align: top, a continuación, asegúrese de que el tamaño de fuente y la relación line-height partido hasta derecho.

+0

Y mirándolo más a fondo, puede ver que el uso de línea base ni siquiera funciona con dos elementos de nivel de bloque como la etiqueta y div. La etiqueta se alinea hasta la última línea en el div. –

+0

¡Gracias! Útil para mí – Boyang

Cuestiones relacionadas