2010-11-01 17 views
93

Nel modulo, ho un campo di selezione e due di input. Questi elementi sono allineati verticalmente. Sfortunatamente, non riesco ad ottenere la stessa larghezza di questi elementi.Come ottenere uguale larghezza di input e selezionare i campi

Ecco il mio codice:

<select name="name1" style="width:198px"> 
    <option>value1</option> 
    <option>value2</option> 
</select><br/> 
<input type="text" name="id1" style="width:193px"><br/> 
<input type="text" name="id2" style="width:193px"> 

Ad esempio precedente, la larghezza migliore per selezionare elemento è 198 o 199 px (ovviamente ho provato 193px, ma la differenza è maggiore). Penso che dipenda dalla risoluzione, da vari computer e browser poiché questi elementi non hanno larghezza uguale (a volte penso che la differenza sia di 1 o 2 px). Ho provato a impostare questi elementi in div o righe di tabella, ma non aiuta.

D: Come posso ottenere esattamente la larghezza uguale di questi elementi?

+1

stessa domanda qui: http://stackoverflow.com/questions/895904/select-inputs-and-text-inputs-in-html-best-way-to-make-equal-width/899283 – BlaM

risposta

111

risposta Aggiornato

Ecco come cambiare il modello di dialogo utilizzata dai/textarea/elementi selezionati in ingresso in modo che tutti si comportano allo stesso modo. È necessario utilizzare la proprietà box-sizing che viene realizzato con un prefisso per ogni browser

-ms-box-sizing:content-box; 
-moz-box-sizing:content-box; 
-webkit-box-sizing:content-box; 
box-sizing:content-box; 

Ciò significa che la differenza 2px abbiamo accennato in precedenza non esiste ..

esempio a http://www.jsfiddle.net/gaby/WaxTS/5/

nota:su IE funziona a partire dalla versione 8 e verso l'alto ..


originale

se si reimposta loro confini quindi l'elemento select sarà sempre di 2 pixel inferiore ai input elementi ..

esempio: http://www.jsfiddle.net/gaby/WaxTS/2/

+0

Grazie per il repl y. E se imposto border per 2px, ci saranno 4 pixel tra input e select fields, per 3px border - 6px ...? – luk4443

+1

@luk, no. Se entrambi gli input e select hanno la stessa larghezza del bordo, la differenza rimarrà a 2 pixel .. –

+0

Grazie. Provo il tuo codice in vari browser e in Firefox va tutto bene, ma non funziona in IE 8 e Opera (ci sono differenze tra ingresso e larghezza di selezione) :( – luk4443

97

ho cercato la risposta di Gaby (+1) sopra, ma ha risolto solo parzialmente il mio problema. Invece ho usato il seguente CSS, in cui il contenuto-box è stato cambiato a border-box:

input, select { 
    -webkit-box-sizing: border-box; 
     -moz-box-sizing: border-box; 
      box-sizing: border-box; 
} 
+21

Funziona meglio della risposta accettata – cguedel

+0

Yup, sembra che i campi del modulo, ad es .: textarea, i campi di input funzionino sempre bene con il modello di box border-box. pulsante, casella di controllo, radio, invio, ripristino e input di ricerca sono border-box per impostazione predefinita. – Vennsoh

+3

Maggiori informazioni: https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing – JorgeeFG

3

aggiungere questo codice in css:

select, input[type="text"]{ 
     width:100%; 
     box-sizing:border-box; 
    } 
-3

creare un'altra classe e aumentare la con dimensioni con 2px esempio

.enquiry_fld_normal{ 
width:278px !important; 
} 

.enquiry_fld_normal_select{ 
width:280px !important; 
} 
Problemi correlati