2014-07-03 14 views
7

CSS:Textarea e ingresso hanno diverse larghezze

textarea, input { 
    width:300px; 
} 

HTML:

<textarea id="input"></textarea> 
<br> 
<input type="submit"> 

Live Demo: http://codepen.io/qaz/pen/teaiG

Perché il display di input e textarea con diverse larghezze? Quali proprietà devo aggiungere per renderle della stessa larghezza?

AGGIORNAMENTO: Impostando il bordo e il riempimento su 0px, è possibile visualizzarli alla stessa larghezza. Nessuno vuole il padding: 0px, però, e, stranamente, quando il padding è, diciamo, 10px per entrambi, non hanno più la stessa larghezza. Ora che ho trovato una soluzione con padding: 0px, sono ancora interessato a una spiegazione e una soluzione che mi permetta di avere ancora il padding.

(sto usando Chrome 35 su Windows 7.)

+0

Non dimenticare di selezionare una risposta che ritieni abbia risposto alla domanda, selezionando la casella di controllo ** Verde sotto i numeri di votazione in base alla risposta. –

risposta

9

Provate ad impostare in questo modo:

textarea, input { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

http://jsfiddle.net/QV9PE/

La proprietà CSS3 per il ridimensionamento delle scatole può fare proprio questo. Il valore del riquadro di confine (in contrapposizione al valore predefinito della casella di contenuto) rende la casella di rendering finale la larghezza dichiarata e qualsiasi taglio di bordo e spaziatura all'interno della casella.

Ora possiamo tranquillamente dichiarare che la nostra area di testo ha una larghezza di 300 px, compresi il riempimento e il bordo basati su pixel, ed eseguire perfettamente il layout.

+2

Sei stato più veloce di me su questo. Accidenti ipad! Ad ogni modo una spiegazione veloce: questa proprietà riporta un vecchio modello di box che includeva i bordi e il riempimento nella larghezza dell'elemento, mentre il modello di box predefinito attuale somma la larghezza dell'elemento, la larghezza del bordo e il padding per ottenere la larghezza finale dell'elemento. Le aree di testo sono in realtà più grandi a causa del riempimento predefinito. Modifica: dannazione anche per la spiegazione che eri più veloce :-) –

+0

Tastiera con 10 dita è sempre più veloce di 2 pollici ;-) –

-3

provare il seguente CSS e HTML. Non so la risposta teorica, ma qui è una soluzione pratica: http://codepen.io/anon/pen/BGeci

CSS:

textarea, input { 
    width:300px; 
} 

input[type=submit] { 
    width:306px; 
} 

HTML:

<textarea id="input"></textarea><br> 
<input type="text" id="input2"></textarea><br> 
<input type="submit"> 
+2

Questa è una soluzione hacky/rigida. In genere questo tipo di cose dovrebbe essere evitato nei CSS. –

Problemi correlati