2010-08-07 10 views
6

HTML5 <button> w przeglądarce Mobile Safari wydaje się mieć stałe, niezmienne lewe i prawe wypełnienie. Here's a demo oraz jego wygląd w Safari 5 i iOS4.iPhone <button> wyściółka jest niezmienna?

Jak mogę się pozbyć tego wypełnienia?

+0

Czy próbowałeś określając CSS 'padding' i jeśli sam nie działa, od' border' nieruchomość dla przycisku, aby wyłączyć natywną renderowania GUI? –

Odpowiedz

7

prostu zorientowali się, że „dodatkowa wyściółka” jest zawsze 1 em. W przypadku korzystania z liczby bezwzględne dla font-size, można ustawić rozmiar czcionki na przycisku do 0 i przywrócić go do elementu wewnętrznego:

button{ 
    font-size:0; 
} 
button span{ 
    font-size:14px; 
} 

<button><span>Submit</span></button> 
+0

BRILLIANT, dziękuję, sir. –

+0

Jesteś sir, jesteś geniuszem! Używam em, bez 'span' Ustawienie "szerokości" na tyle dużej, aby zawierało dodatkowe wypełnienie posortowane, teraz mam mój idealnie okrągły, wyśrodkowany przycisk. – Eystein

6

Tak długo, jak nie potrzebujesz natywnego przycisku sterującego, i dobrze się czujesz robiąc własny styl w CSS, po prostu dodaj -webkit-appearance: none, a powinieneś uzyskać pełną kontrolę nad elementem.

Możesz również spróbować uzyskać -webkit-appearance: button lub -webkit-appearance: pushbutton, aby uzyskać domyślną stylizację.

Możesz zobaczyć niektóre z tych at work here.

+0

Bardzo sprytne rozwiązanie, które * powinno * zadziałać. Ale już to próbowałem - żadnych kości. –

+0

Wygląda na to, że jest to błąd w przeglądarce na iPada od wersji 4.1. Sad :( – Joshua

+0

Ten błąd został naprawiony przez iOS 4.2, dostępny na XCODE 3.2.5 – Marin

1

mam rozwiązać ten problem poprzez owinięcie <button> zawartość w <div> jak tak ...

<button><div>Submit</div></button> 

lub za pomocą jQuery i dodanie następujących do skryptu ...

$('button').wrapInner('<div/>') 

... i zawiera następujące style na stronie

button { padding: 0; } 
button > div { margin: 0 -1em; padding: 0.4em 0.8em; } 

Pamiętaj, że możesz zmienić wewnętrzne wypełnienie div, aby odpowiadało Twoim potrzebom. Zwróć też uwagę, że działa to tylko z elementami <button>, a nie z obiektami pokrewnymi, ponieważ nie mogą zawierać elementów potomnych.

+0

Negatywny margines działa? OK. Miałem nadzieję, że nie musiałem do tego przychodzić, ale działa, tak myślę, dziękuję –

+0

IOS 5 naprawia ten błąd, więc ten hack w rzeczywistości łamie przyciski iPhone'a 4 ... Jak więc rozpakować IOS 5? –

1

Po przejściu przez przyciski na tydzień wyrzuciłem je i teraz używam div-s. Jeśli dodasz display: inline-block; do przycisku div, może on być wyśrodkowany jak przycisk.

0

"Najczystsze" rozwiązanie, które znalazłem, nie wymaga żadnych dodatkowych elementów, ale zakłada pewną stałą wielkość z Twojej strony. Nod do thomp dla negatywnej idei marginesu. To jest podobne. Będzie to przeciwdziałać dodatkowy padding:

text-indent:-6px; 
0

to jest bug | cechą wszystkich przeglądarek WebKit. spróbuj dodać

box-sizing: conter-box; 
Powiązane problemy