2013-08-24 8 views
6

Sto tentando di sovrapporre il testo su un <input type="text"> (per il supporto cross-browser placeholder). Ho scoperto che il mio posizionamento è sempre disattivato di un paio di pixel, a causa di una sorta di padding che non può essere rimosso impostando padding: 0;. I suggerimenti here e here non risolvono il problema.Perché gli input di testo hanno un riempimento extra?

Si può vedere questo imbottitura nel seguente screenshot da Chrome, come lo spazio bianco tra il momento clou blu e il bordo giallo:

enter image description here

Come posso a) rimuovere questo spazio; o b) misurarlo usando Javascript?

+0

Hai provato un ripristino CSS? – j08691

+0

Dovresti prendere in considerazione l'utilizzo di qualcosa come [Normalize.css] (http://necolas.github.io/normalize.css/) se non vuoi gestire un reset completo del CSS (che in quasi tutti i casi non è necessario) . – mc10

risposta

2

Se si sostituiscono i confini di default con il proprio, l'imbottitura va via (almeno per me, su Chrome/Mac):

enter image description here

Questo è il CSS che ho usato:

input { 
    padding: 0; 
    outline: none; 
    border: 1px solid red; 
} 

http://jsfiddle.net/NZZ5B/

+1

Questo funziona per me in Chrome 29.0.1547.57. Il motivo è che Chrome ha come valore predefinito un bordo interno 2px, che ha l'effetto di sembrare un bordo solido a pixel singolo con un pixel extra di spaziatura –

+0

Fantastico! Funziona nelle versioni più recenti di Chrome, Firefox (che all'inizio era a posto), Safari, IE8 e 9, ma non in Opera e IE10. Qualche idea del perché? –

+0

@ 1 '' Hai ripristinato il riempimento, margine anche tu? E hai provato a impostare il modello della scatola di confine? – bfavaretto

-1

È necessario ripristinare tutto. Quindi è meglio raccomandare di utilizzare:

<style> 
html, body { 

    margin: 0; 
    padding: 0; 

} 
</style> 

Spero che questo ha aiutato.

+0

Questo non funziona, anche se generalmente è una buona soluzione per problemi come questo. –

Problemi correlati