Ich hatte verdammt viel Zeit damit zu versuchen, dies zu erreichen. Ich wollte keine Flash-Lösung verwenden, und keine der von mir betrachteten jQuery-Bibliotheken war in allen Browsern zuverlässig.
Ich habe meine eigene Lösung entwickelt, die vollständig in CSS implementiert ist (mit Ausnahme der Änderung des Onclick-Stils, damit die Schaltfläche "angeklickt" angezeigt wird).
Sie können ein funktionierendes Beispiel hier ausprobieren: http://jsfiddle.net/VQJ9V/307/ (Getestet in FF 7, IE 9, Safari 5, Opera 11 und Chrome 14)
Es funktioniert, indem eine große Dateieingabe (mit einer Schriftgröße von 50 Pixel) erstellt und dann in ein Div mit fester Größe und festem Überlauf eingeschlossen wird: versteckt. Die Eingabe ist dann nur durch dieses "Fenster" div sichtbar. Dem Div kann ein Hintergrundbild oder eine Hintergrundfarbe zugewiesen werden, Text kann hinzugefügt werden und die Eingabe kann transparent gemacht werden, um den Div-Hintergrund anzuzeigen:
HTML:
<div class="inputWrapper">
<input class="fileInput" type="file" name="file1"/>
</div>
CSS:
.inputWrapper {
height: 32px;
width: 64px;
overflow: hidden;
position: relative;
cursor: pointer;
/*Using a background color, but you can use a background image to represent a button*/
background-color: #DDF;
}
.fileInput {
cursor: pointer;
height: 100%;
position:absolute;
top: 0;
right: 0;
z-index: 99;
/*This makes the button huge. If you want a bigger button, increase the font size*/
font-size:50px;
/*Opacity settings for all browsers*/
opacity: 0;
-moz-opacity: 0;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0)
}
Lassen Sie mich wissen, wenn es Probleme gibt, und ich werde versuchen, diese zu beheben.