Wie viele Leute möchte ich das Hässliche anpassen input type=file
, und ich weiß, dass es ohne einige Hacks und / oder nicht geht javascript
. In meinem Fall dienen die Schaltflächen zum Hochladen von Dateien jedoch nur zum Hochladen von Bildern ( jpeg | jpg | png | gif ). Daher habe ich mich gefragt, ob ich ein " clickable
" Bild verwenden könnte, das genau als Eingabedatei fungiert ( Zeigen Sie das Dialogfeld und dieselbe $ _FILE auf der übermittelten Seite an.
Ich habe hier eine Problemumgehung gefunden , und diese auch interessant (funktioniert aber nicht mit Chrome = /).
Was macht ihr, wenn ihr euren Dateischaltflächen etwas Stil hinzufügen wollt? Wenn Sie eine Meinung dazu haben, klicken Sie einfach auf die Antwortschaltfläche;)
Antworten:
Das funktioniert wirklich gut für mich:
Grundsätzlich bewirkt das for- Attribut des Etiketts, dass das Klicken auf das Etikett dem Klicken auf die angegebene Eingabe entspricht .
Die auf none gesetzte Anzeigeeigenschaft bewirkt außerdem, dass die Dateieingabe überhaupt nicht gerendert wird, wodurch sie schön und sauber ausgeblendet wird.
In Chrome getestet, sollte aber laut Web auf allen gängigen Browsern funktionieren. :) :)
EDIT: Added JSFiddle hier: https://jsfiddle.net/c5s42vdz/
quelle
Eigentlich kann es in reinem CSS gemacht werden und es ist ziemlich einfach ...
HTML Quelltext
CSS-Stile
Die Idee ist, die Eingabe absolut innerhalb Ihres Etiketts zu positionieren. Stellen Sie die Schriftgröße der Eingabe auf einen großen Wert ein, wodurch die Schaltfläche "Durchsuchen" vergrößert wird. Es dauert dann einige Versuche und Irrtümer unter Verwendung der negativen Eigenschaften links / oben, um die Schaltfläche zum Durchsuchen der Eingabe hinter Ihrem Etikett zu positionieren.
Wenn Sie die Taste positionieren, setzen Sie das Alpha auf 1. Wenn Sie fertig sind, setzen Sie es wieder auf 0 (damit Sie sehen können, was Sie tun!)
Stellen Sie sicher, dass Sie browserübergreifend testen, da alle die Eingabeschaltfläche in einer etwas anderen Größe rendern.
quelle
Tolle Lösung von @hardsetting, aber ich habe einige Verbesserungen vorgenommen, damit es mit Safari (5.1.7) in Windows funktioniert
Ich habe
visibility: hidden, width:0
anstelledisplay: none
für Safari-Problem verwendet undpointer-events: none
inimg
Tag hinzugefügt , damit es funktioniert, wenn sich das Tag des Eingabedateityps im FORM-Tag befindet.Scheint für mich in allen gängigen Browsern zu funktionieren.
Hoffe es hilft jemandem.
quelle
Ich würde SWFUpload oder Uploadify verwenden . Sie brauchen Flash, machen aber alles, was Sie wollen, ohne Probleme.
Jede
<input type="file">
basierte Problemumgehung, die versucht, den Dialog "Datei öffnen" durch andere Mittel als das Klicken auf das eigentliche Steuerelement auszulösen, kann aus Sicherheitsgründen jederzeit aus den Browsern entfernt werden. (Ich denke, in den aktuellen Versionen von FF und IE ist es nicht mehr möglich, dieses Ereignis programmgesteuert auszulösen.)quelle
Dies ist meine Methode, wenn ich Ihren Standpunkt verstanden habe
HTML
jQuery
quelle
Es ist wirklich einfach, Sie können dies versuchen:
quelle
Sie können stattdessen ein Bild einfügen und dies folgendermaßen tun:
HTML:
JQuery:
CAVEAT : Wenn Sie in IE9 und IE10 den Onclick in einer über Javascript eingegebenen Datei auslösen, wird das Formular als "gefährlich" gekennzeichnet und kann nicht mit Javascript eingereicht werden. Es ist nicht sicher, ob es traditionell gesendet werden kann.
quelle
RUN SNIPPET oder Kopieren Sie einfach den obigen Code und führen Sie ihn aus. Sie werden bekommen, was Sie wollten. Sehr einfach und effektiv ohne Javascript. Genießen!!!
quelle
Die Eingabe selbst wird mit CSS-Sichtbarkeit ausgeblendet: ausgeblendet.
Dann können Sie jedes gewünschte Element haben - Anker oder Bild. Wenn Sie auf den Anker / das Bild klicken, lösen Sie einen Klick auf das ausgeblendete Eingabefeld aus. Das Dialogfeld zur Auswahl einer Datei wird angezeigt.
EDIT: Eigentlich funktioniert es in Chrome und Safari, ich habe gerade bemerkt, dass dies in FF4Beta nicht der Fall ist
quelle
Arbeitscode:
verstecke einfach den Eingabeteil und mache das so.
quelle
Ich hatte in den letzten zehn Jahren viele Probleme mit versteckten und nicht sichtbaren Eingaben. Manchmal sind die Dinge viel einfacher als wir denken.
Ich hatte einen kleinen Wunsch mit IE 5,6,7,8 und 9, die Deckkraft nicht zu unterstützen, und daher würde die Dateieingabe das Upload-Bild abdecken, jedoch hat der folgende CSS-Code das Problem behoben.
Das folgende Snipped wurde auf Chrome getestet, IE 5,6,7,8,9,10. Das einzige Problem in IE 5 ist, dass es keine automatische Marge unterstützt.
Führen Sie das Snippet aus, kopieren Sie einfach das CSS und fügen Sie HTML ein. HTML ändern Sie die Größe nach Ihren Wünschen.
quelle