2013-08-24 10 views
6

Próbuję nakładać tekst na <input type="text"> (dla obsługi wielu przeglądarek placeholder). Zauważyłem, że moje pozycjonowanie jest zawsze wyłączone o kilka pikseli, ze względu na rodzaj wypełnienia, którego nie można usunąć ustawiając padding: 0;. Sugestie: here i here nie rozwiązują problemu.Dlaczego wejścia tekstowe mają dodatkowe wypełnienie?

Widać to dopełnienie w poniższym zrzucie z Chrome jako białej przestrzeni pomiędzy niebieskim podświetleniem i żółtą ramką:

enter image description here

Jak mogę a) usunięcie tego miejsca; lub b) zmierzyć za pomocą JavaScript?

+0

Czy próbowałeś resetowania CSS? – j08691

+0

Powinieneś rozważyć użycie czegoś takiego jak [Normalize.css] (http://necolas.github.io/normalize.css/), jeśli nie chcesz zajmować się pełnym resetem CSS (który prawie w każdym przypadku jest niepotrzebny) . – mc10

Odpowiedz

2

Jeśli zastąpić granice domyślnych z własną rękę, wyściółka odchodzi (przynajmniej dla mnie, na Chrome/Mac):

enter image description here

To CSS użyłem:

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

http://jsfiddle.net/NZZ5B/

+1

To działa dla mnie w Chrome 29.0.1547.57. Powodem jest to, że Chrome domyślnie ma wbudowaną obramowanie o rozmiarze 2 pikseli, które wygląda jak jednopikselowy, jednolity brzeg z dodatkowym pikselem o odstępach. –

+0

Fantastyczne! Działa to w najnowszych wersjach Chrome, Firefox (co było w porządku) oraz Safari, a także w IE8 i 9, ale nie w Operze i IE10. Każdy pomysł, dlaczego? –

+0

@ 1 '' Czy zresetowałeś dopełnienie, margines też? Czy próbowałeś ustawić model skrzynki z ramką? – bfavaretto

-1

Musisz zresetować wszystko. Najlepiej więc użyć:

<style> 
html, body { 

    margin: 0; 
    padding: 0; 

} 
</style> 

Mam nadzieję, że pomogło to.

+0

To nie działa, chociaż na ogół jest dobrym rozwiązaniem takich problemów. –

Powiązane problemy