2009-07-03 8 views
1

Ich möchte eine Texteingabe mit einer klaren Schaltfläche auf engstem Raum erstellen. Wie das iPhone möchte ich die Schaltfläche (ein kleines x-Bild) "innerhalb" der Eingabe ganz rechts platzieren, so dass ein Benutzer einfach darauf klicken kann, um den Wert zu löschen, anstatt Platz neben der Eingabe zu verschwenden.Wie kann ich eine browserübergreifende Schaltfläche innerhalb einer Texteingabe (oben) platzieren?

Momentan benutze ich ein Hintergrundbild auf der Eingabe und eine unsichtbare Spanne, die über der Spitze schwebt. Dies erreicht, was ich will, aber es gibt Probleme: Wenn der Benutzer zu viel Text eingibt, geht er einfach über das Bild, und IE scheint Elemente über Bildern nicht zu unterstützen. Um das erste Problem zu lösen, habe ich versucht, den Rand der Eingabe auf der rechten Seite zu setzen, aber das schrumpfte die gesamte Sache, im Gegensatz zu der Eingabe die gleiche Größe und die Begrenzung des Textes auf einen Bereich.

Kennen Sie irgendeine Art, wie ich diese kompakte Eingabe- und Löschtastenkombination erstellen kann und sie in allen modernen Browsern gleich aussehen und funktionieren lässt?

Danke!

+0

könnte Padding anstelle eines Randes verwendet haben ... – mpen

Antwort

3

Wenn Sie Taste oben auf Text wollen:

<span><input><button>X</button></span> 

span {display:inline-block; position:relative;} 
button {position:absolute; right:0; top:0;} 

Wenn Sie Taste wollen nicht mit dem Text stören:

span {border:2px inset gray; background:white; color:black;} 
input {border:0; color:inherit; background:transparent;} 
+0

Ich dachte über so etwas zu tun, aber es gibt andere Standard formatierte Eingaben auf der Seite, denken Sie, es wird die Benutzer stören, dass die beiden Eingänge möglicherweise ein wenig aussehen könnten anders? Ansonsten, das ist es, danke! – hornairs

+0

Es könnte in der Tat seltsam aussehen. Ich fürchte, der einzige Weg, um es konsistent zu bekommen, ist, alle Eingaben stark zu stylen. – Kornel

0

Sie könnten eine Texteingabe mit right-marging: 0; machen und dann die setzen Bild direkt daneben (inline), in einem div/span mit einem Hintergrund, der eine Eingabeerweiterung simuliert. Auf diese Weise scrollt die Eingabe direkt vor Erreichen des Bildes und Sie erhalten immer noch den gewünschten Bild-in-Eingang-Effekt.

Ich teste dies nicht, aber es wäre so etwas wie dieses:

<input /><span><img /><span/> 

input{margin-right: 0; border: 1px solid black; border-right: 0; background-color: white; color: black;} 
span{background-image: url('xxx.png');width:20px;} 
img{margin-left:0;border:1px solid black;border-left: 0;} 

Sie auch die Eingabe ohne Hintergrund-Bild erweitern konnte, einfach nur mit CSS.

+0

Hat den Effekt, den ich will, aber das Bild wäre schwer zu machen, weil die Eingaben nicht über verschiedene Browser hinweg gleich aussehen, denke ich. Safari fügt interne Schatten und iPhones (die einige Benutzer verwenden) sind nur verrückt. – hornairs

+0

Das ist genau der Grund, warum Sie CSS verwenden sollten, um Stil in Ihre Eingabe zu zwingen. Ich kann nicht garantieren, dass alle diese Browser die CSS für die Eingabe rendern. – Spidey

Verwandte Themen