在开发项目过程当中会碰到不一样浏览器input file样式不同。css
通过分析,打算都用IE上面的附件上传样式,java
方案以下:浏览器
一、在IE下截个如上面的上传按钮,并保存。this
二、判断浏览器类型,若是是非IE,则将页面上的input 设置为近乎透明,而后将图片放在上面。code
不用修改原有代码,渲染时会扫描页面的input file 而后进行样式覆盖。blog
代码以下图片
css:ci
div.fakefile { position: absolute; top: 0px; left: 0px; z-index: 1; } input.file { width: 208px; position: relative; text-align: right; -moz-opacity: 0; filter: alpha(opacity : 0); opacity: 0; z-index: 2; }
js代码:开发
/** * 附件上传样式自定义,解决不一样浏览器附件上传框样式不同问题 */ function initFileUploads() { if($.browser&&$.browser.msie) return; $("input[type=file]").each(function(){ if($(this).parent().attr("class")!='fileinputs') return; $(this).attr("class","file"); var obj=$("<div class='fakefile'><input ct='file'/><img style='padding-bottom:4px;' src='common/image/upload.png'><div>"); $(this).after(obj); $(this).parent().find("input[ct=file]").width($(this).width()-65); $(this).on("change",function(){ $(($(this).parent().find("input"))[1]).val($(this).val()); }) }); } $(document).ready(function(){ initFileUploads(); })