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获取HTML静态页面参数传递值示例
Aug 18 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
Sep 07 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
动态Axios的配置步骤详解
Jan 12 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
Sep 28 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
Aug 15 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
js实现ajax的用户简单登入功能
Jun 18 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的网址
2006/11/25 PHP
php 中的str_replace 函数总结
2007/04/27 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
javaScript同意等待代码实现心得
2011/01/01 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Python深入学习之内存管理
2014/08/31 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python分析作业提交情况
2017/11/22 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
python实现图片横向和纵向拼接
2020/03/05 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
python简单的三元一次方程求解实例
2020/04/02 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
在校生党员自我评价
2013/09/25 职场文书
业务总经理岗位职责
2014/02/03 职场文书
学校就业推荐信范文
2014/05/19 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书