2010-08-07 4 views
6

Ein HTML5 <button> in Mobile Safari scheint feste, unveränderbare linke und rechte Auffüllung zu haben. Here's a demo plus wie es in Safari 5 und iOS4 aussieht.iPhone <button> Polsterung unveränderbar?

Wie kann ich diese Polsterung loswerden?

+0

Haben Sie versucht, eine CSS 'padding' spezifiziert und wenn das allein nicht funktioniert, ein' border' Eigenschaft für die Schaltfläche nativen GUI-Rendering zu deaktivieren? –

Antwort

7

Ich habe gerade herausgefunden, dass die "zusätzliche Polsterung" immer 1em ist. Falls Sie eine absolute Zahl für Ihren font-size verwenden, können Sie auf die Schaltfläche der font-size auf 0 gesetzt und es für das innere Element zurück:

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

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

BRILLIANT: Danke, Sir. –

+0

Ihr Sir, seid ein Genie! Ich benutze Ems, ohne die 'span' "Breite", die groß genug ist, um die zusätzliche Polsterung einzubeziehen, sortierte es, ich habe jetzt meinen perfekt runden zentrierten Knopf. – Eystein

6

Solange Sie nicht die native Schaltfläche Kontrolle sehen, und sind OK Ihren eigenen Stil in CSS tun, fügen Sie einfach -webkit-appearance: none, und Sie sollten die volle Kontrolle über das Element erhalten.

Sie könnten auch versuchen, -webkit-appearance: button oder -webkit-appearance: pushbutton zu versuchen, das Standard-Styling auch zu bekommen.

Sie können einige dieser at work here sehen.

+0

Sehr clevere Lösung, die * hätte * funktionieren sollen. Aber ich habe das schon probiert - kein Würfel. –

+0

Dies scheint ein Fehler im iPad-Browser ab Betriebssystemversion 4.1 zu sein. Sad :( – Joshua

+0

Dieser Fehler wurde behoben mit iOS 4.2, verfügbar auf XCODE 3.2.5 – Marin

1

ich dieses Problem zu überwinden haben, indem <button> Inhalte in einer <div> Umwickeln wie so ...

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

oder von jQuery verwenden und die folgenden zu einem Skript ...

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

... und einschließlich der folgenden Stile auf die Seite

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

Beachten Sie, dass Sie die Polsterung des inneren Divs an Ihre Bedürfnisse anpassen können. Beachten Sie auch, dass dies nur mit <button> Elementen und nicht mit <input type="button"> oder verwandten Elementen funktioniert, da sie keine untergeordneten Elemente enthalten können.

+0

Ein negativer Rand funktioniert? OK. Ich hoffte, dass es nicht dazu kommen musste, aber es funktioniert, denke ich. Danke. –

+0

IOS 5 behebt diesen Fehler, so dass dieser Hack die Tasten des iPhone 4 bricht ... Wie also lösen wir IOS 5 aus? –

1

Nachdem ich eine Woche lang mit den Knöpfen herumgespielt habe, habe ich sie abgelegt und benutze stattdessen div-s. Wenn Sie display: inline-block; zum div-Knopf hinzufügen, kann es auch wie ein Knopf zentriert werden.

0

Die "sauberste" Lösung, die ich gefunden habe, erfordert keine zusätzlichen Elemente, sondern setzt eine gewisse Maßanpassung voraus. Nicken Sie sich für die negative Marge Idee. Das ist ähnlich. Dies wird der zusätzlichen Auffüllung entgegenwirken:

text-indent:-6px; 
0

, dass der Fehler ist | Merkmal aller Webkit-Browser. Versuchen Sie,

box-sizing: conter-box;