ฉันกำลังมีเวลาพยายามทำสิ่งนี้ ฉันไม่ต้องการใช้โซลูชัน Flash และไม่มี jQuery library ใด ๆ ที่ฉันเชื่อถือได้ในทุกเบราว์เซอร์
ฉันมาพร้อมกับโซลูชันของตัวเองซึ่งถูกนำไปใช้อย่างสมบูรณ์ใน CSS (ยกเว้นการเปลี่ยนรูปแบบ onclick เพื่อให้ปุ่มปรากฏเป็น 'คลิก')
คุณสามารถลองตัวอย่างการใช้งานได้ที่นี่: http://jsfiddle.net/VQJ9V/307/ (ทดสอบใน FF 7, IE 9, Safari 5, Opera 11 และ Chrome 14)
มันทำงานได้โดยการสร้างอินพุตไฟล์ขนาดใหญ่ (ที่มีขนาดตัวอักษร: 50px) จากนั้นล้อมรอบใน div ที่มีขนาดคงที่และล้น: ซ่อน อินพุตจะมองเห็นได้ผ่านทาง "หน้าต่าง" div div สามารถให้ภาพพื้นหลังหรือสีข้อความสามารถเพิ่มและการป้อนข้อมูลสามารถทำให้โปร่งใสเพื่อเปิดเผยพื้นหลัง 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)
}
แจ้งให้เราทราบหากมีปัญหาใด ๆ กับมันและฉันจะพยายามแก้ไข