Bunu başarmaya çalışan bir zamanım vardı. Bir Flash çözümü kullanmak istemedim ve baktığım jQuery kitaplıklarının hiçbiri tüm tarayıcılarda güvenilir değildi.
Tamamen CSS'de uygulanan kendi çözümümü buldum (düğmenin 'tıklatıldığını' göstermek için onclick stil değişikliği hariç).
Burada çalışan bir örneği deneyebilirsiniz: http://jsfiddle.net/VQJ9V/307/ (FF 7, IE 9, Safari 5, Opera 11 ve Chrome 14'te test edilmiştir)
Büyük bir dosya girişi (yazı tipi boyutu: 50 piksel) oluşturarak, ardından sabit boyutu ve taşması olan bir div'a sararak çalışır: gizli. Giriş daha sonra sadece bu "pencere" div. Div'e bir arka plan resmi veya rengi verilebilir, metin eklenebilir ve div arka planını göstermek için giriş şeffaf hale getirilebilir:
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)
}
Bununla ilgili herhangi bir sorun olup olmadığını bana bildirin ve bunları düzeltmeye çalışacağım.