2010-09-17 15 views
5

Sto cercando di ottenere un'etichetta allineata con la linea di base della prima riga di testo in un'area di testo.Allineamento verticale con linea di base e aree di testo

Il tentativo naif:

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

risultati in etichetta essendo allineati con la parte inferiore dell'area di testo. Preferirei farlo allineare con la linea prima dell'area.

Grazie.

+0

Le dimensioni dei caratteri per l'etichetta e la textarea sono le stesse? –

risposta

0

è necessario mettere il labeldiv all'interno dello stesso div come il textarea, allora, se si vuole che impostato sulla parte superiore del textarea che stai cercando vertical-align: top, non baseline.

View e l'esempio qui:
http://jsfiddle.net/anhus/

+0

Il problema è che voglio il testo allineato sulla linea di base del testo nella textarea. L'allineamento verso l'alto solo per le aree di testo appare errato quando lo si confronta con il resto dell'etichetta + i campi di testo che sono allineati con la linea di base. – jmo

+0

Ok, beh, basta cambiare 'vertical-align: top' su cosa vuoi che sia. linea di base, o qualsiasi altra cosa. – Robert

+2

-1: manca il punto. Vuole allineare la linea di base dell'etichetta con la linea di base * del primo * della textarea, che è la cosa tipograficamente corretta. Non ho ancora trovato un buon modo per farlo - si presenta ogni volta che ciò che si sta etichettando ha diverse metriche di testo. –

2

Il problema è che l'area di testo è visto come un blocco, come un'immagine. Quando si esegue un allineamento verticale, viene utilizzato il bordo per determinare il posizionamento anziché il testo. Nell'esempio seguente, puoi vedere che l'etichetta e il div sono posizionati in base al testo all'interno, dove la textarea si comporta come l'immagine.

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

Credo che l'unico modo per ottenere l'etichetta e textarea per allineare il modo desiderato è quello di fare un vertical-align: top, quindi assicuratevi che il vostro font-size e il rapporto di line-height match up destra.

+0

E guardando oltre, puoi vedere che l'utilizzo della baseline non funziona nemmeno con due elementi a livello di blocco come label e div. L'etichetta è allineata fino all'ultima riga nel div. –

+0

Grazie! Utile per me. – Boyang

Problemi correlati