这是很不错的css美化上传input-file的修饰,记得收藏!!!我也是找了好多才找到这么容易理解的!
html部分:
<!--样式1--> <a href="javascript:;" class="a-upload"><input type="file" name="" id="">点击这里上传文件</a> <!--样式2--> <a href="javascript:;" class="file">选择文件 <input type="file" name="" id=""></a>
css样式1:
.a-upload { padding: 4px 10px; height: 20px; line-height: 20px; position: relative; cursor: pointer; color: #888; background: #fafafa; border: 1px solid #ddd; border-radius: 4px; overflow: hidden; display: inline-block; *display: inline; *zoom: 1 } .a-upload input { position: absolute; font-size: 100px; right: 0; top: 0; opacity: 0; filter: alpha(opacity=0); cursor: pointer } .a-upload:hover { color: #444; background: #eee; border-color: #ccc; text-decoration: none }
css样式2:
.file { position: relative; display: inline-block; background: #D0EEFF; border: 1px solid #99D3F5; border-radius: 4px; /*padding: 4px 12px;*/ overflow: hidden; color: #1E88C7; text-decoration: none; text-indent: 0; line-height: 20px; margin-left: 10px; } .file input { position: absolute; font-size: 100px; right: 0; top: 0; opacity: 0; width: 100px; height: 100px; } .file:hover { background: #AADFFD; border-color: #78C3F3; color: #004974; text-decoration: none; }
美化后可以用js控制:
$(".a-upload").on("change","input[type='file']",function(){ var filePath=$(this).val(); if(filePath.indexOf("jpg")!=-1 || filePath.indexOf("png")!=-1){ $(".fileerrorTip").html("").hide(); var arr=filePath.split('\\'); var fileName=arr[arr.length-1]; $(".showFileName").html(fileName); }else{ $(".showFileName").html(""); $(".fileerrorTip").html("您未上传文件,或者您上传文件类型有误!").show(); return false }})
而我!!!要用localResizeIMG压缩上传图片,这个就特棒。
//图片压缩上传,兼容安卓、苹果、web document.querySelector('#file').addEventListener('change', function () { var option = { width : null,//width {Number} 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。 height : null,//同上 fieldName: 'file',//{String} 后端接收的字段名,默认:file*/ quality : 0.5,//{Number} 图片压缩质量,取值 0 - 1,默认为0.7 } lrz(this.files[0],option) .then(function (rst) { // 处理成功会执行 console.log(rst); $.ajax({ url: "{:url('***********')}", data: rst.formData, dataType:'json', processData: false, contentType: false, type: 'POST', success: function (data) { //data = JSON.stringify(data); console.log('upload',data) }, error:function (e) { console.log('ajax error',e) } }); }) .catch(function (err) { console.log('upload_err',err) // 处理失败会执行 }) .always(function () { // 不管是成功失败,都会执行 }); });