默認的上傳樣式咱們總以爲不太好看,根據需求總想改爲和上下結構統一的風格……javascript
實現方法和思路:
1.在input元素外加a超連接標籤
2.給a標籤設置按鈕樣式
3.設置input[type='file']爲透明,並定位,覆蓋在a上面
html代碼:css
<a class="input-file input-fileup" href="javascript:;"> + 選擇文件<input size="100" type="file" name="file" id="file"> </a>
css代碼: html
.input-file{ display: inline-block; position: relative; overflow: hidden; text-align: center; width: auto; background-color: #2c7; border: solid 1px #ddd; border-radius: 4px; padding: 5px 10px; font-size: 12px; font-weight: normal; line-height: 18px; color:#fff; text-decoration: none; } .input-file input[type="file"] { position: absolute; top: 0; right: 0; font-size: 14px; background-color: #fff; transform: translate(-300px, 0px) scale(4); height: 40px; opacity: 0; filter: alpha(opacity=0); }
效果:java
此時並不能顯示上傳的文件名,如需顯示出上傳的文件名須要js來處理ide
js代碼:this
<script> $(function(){ $(".input-fileup").on("change","input[type='file']",function(){ var filePath=$(this).val(); if(filePath.indexOf("jpg")!=-1 || filePath.indexOf("png")!=-1){ $(".fileerrorTip1").html("").hide(); var arr=filePath.split('\\'); var fileName=arr[arr.length-1]; $(".showFileName1").html(fileName); }else{ $(".showFileName1").html(""); $(".fileerrorTip1").html("您未上傳文件,或者您上傳文件類型有誤!").show(); return false } }) }) </script>
同時須要給html加上兩個divspa
<a class="input-file input-fileup" href="javascript:;"> + 選擇文件<input size="100" type="file" name="file" id="file"> </a>
<div class="fileerrorTip1"></div> <div class="showFileName1"></div>
效果:code