Tôi đã có một thời gian cố gắng để thực hiện điều này. Tôi không muốn sử dụng giải pháp Flash và không có thư viện jQuery nào tôi xem là đáng tin cậy trên tất cả các trình duyệt.
Tôi đã đưa ra giải pháp của riêng mình, được triển khai hoàn toàn bằng CSS (ngoại trừ thay đổi kiểu onclick để làm cho nút xuất hiện 'nhấp chuột').
Bạn có thể thử một ví dụ hoạt động tại đây: http://jsfiddle.net/VQJ9V/307/ (Đã thử nghiệm trong FF 7, IE 9, Safari 5, Opera 11 và Chrome 14)
Nó hoạt động bằng cách tạo một đầu vào tệp lớn (với cỡ chữ: 50px), sau đó gói nó trong một div có kích thước cố định và tràn: ẩn. Đầu vào sau đó chỉ được hiển thị thông qua div "cửa sổ" này. Div có thể được cung cấp hình ảnh hoặc màu nền, văn bản có thể được thêm vào và đầu vào có thể được làm trong suốt để hiển thị nền div:
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)
}
Hãy cho tôi biết nếu có bất kỳ vấn đề nào với nó và tôi sẽ cố gắng khắc phục chúng.