js自定义input文件上传样式


Posted in Javascript onOctober 26, 2018

文件上传是我们经常会用到的功能,但是原生的input样式太丑了,能不能自定义一个input文件上传样式呢?

我这里写了两种方法,form表单提交跟ajax异步提交都没有问题,自动上传或者点击上传按钮上传也都没问题

先看效果:

js自定义input文件上传样式

js自定义input文件上传样式

js自定义input文件上传样式

代码贴出来: 

方法1

<!--
      方法1:
      div : 设置宽高、overflow:hidden;超出的部分被隐藏
      input : 设置层级z-index = 1;设置透明度opacity:0;设置相对定位position:relative;使两个元素重叠
      i : 设置层级z-index = 0;(要比input小)设置相对定位position:relative;使两个元素重叠
      利用div框出大小,input在i上面但透明度为0,当我们点击i时其实是点击到了input但视觉上我们只看到了i
    -->
    <h3>方法1:</h3>
    <form action="upload" method="post" enctype="multipart/form-data">
      <!-- 辅助div,框出显示内容 -->
      <div style="width: 20px;height: 20px;overflow:hidden;">
        <!-- 实际的选择文件input -->
        <input style="position:relative;z-index :1;opacity:0" onchange="change()" id="file" type="file"
            name="file"/>
        <!-- 可视图标 -->
        <i class="glyphicon glyphicon-open" style="position:relative;top:-22px;z-index :0;font-size: 20px;"></i>
      </div>
      <!-- 文件名 -->
      <br/><span id="fileName"></span>
      <!-- 表单提交按钮 -->
      <br/><input id="but_submit" type="submit" value="上传"/>
    </form>
    <script>
      function change() {
        //回显文件名
        $("#fileName").text($("#file").val());
      }
</script>

方法2

<!--
    方法2:
      input : 设置层级display: none; 直接隐藏
      i : onclick="document.getElementById('file2').click();" 图标的click触发input的click
      直接隐藏input,设置图标的click触发input的click,从而达到我们想要的效果
    -->
    <h3>方法2:</h3>
    <form id="uploadForm">
      <!-- 实际的选择文件input -->
      <input style="display: none;" onchange="change2()" id="file2" type="file" name="file"/>
      <!-- 可视图标 -->
      <i class="glyphicon glyphicon-open" style="font-size: 20px;"
        onclick="document.getElementById('file2').click();"></i>
      <!-- 文件名 -->
      <br/><span id="fileName2"></span>
    </form>
    <script>
      //自动上传
      function change2() {
        //回显文件名
        $("#fileName2").text($("#file2").val());
        //执行上传
        var form = new FormData(document.getElementById("uploadForm"));
        $.ajax({
          url: ctx + "/rack/upload",
          type: "post",
          data: form,
          processData: false,
          contentType: false,
          success: function (data) {
            console.log(data);
          },
          error: function (e) {
            console.log(e);
          }
        });
    }
</script>

controller

@PostMapping("upload")
  public ResultModel<Boolean> upload(MultipartFile file) {
    //文件名
    System.out.println(file.getOriginalFilename());
    return ResultModel.of(true);
}

样式还是丑了一点,但这些都不重要,关键是掌握了方法再找个UI小姐姐来帮忙调试,就可以做出任何想要的UI效果啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript延迟执行实现方法(setTimeout)
Dec 30 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
详解Bootstrap插件
Apr 25 Javascript
JavaScript里 ==与===区别详解
Aug 16 Javascript
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
vue拖拽组件使用方法详解
Dec 01 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
Oct 25 #Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 #Javascript
webpack4+react多页面架构的实现
Oct 25 #Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 #Javascript
代码整洁之道(重构)
Oct 25 #Javascript
Vue使用NPM方式搭建项目
Oct 25 #Javascript
小程序云开发实战小结
Oct 25 #Javascript
You might like
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php实现将Session写入数据库
2015/07/26 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript调试说明
2010/06/07 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
高三体育教学反思
2014/01/29 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
《菜园里》教学反思
2014/04/17 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
先进个人材料怎么写
2014/12/30 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python