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的一种模块模式
Mar 22 Javascript
通过JS获取用户本地图片路径并显示的代码
Feb 16 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
jQuery中[attribute^=value]选择器用法实例
Dec 31 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
浅谈node.js 命令行工具(cli)
May 10 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
JS实现TITLE悬停长久显示效果完整示例
Feb 11 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
python实现SOM算法
2018/02/23 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python实现基于POS算法的区块链
2018/08/07 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
文秘人员工作职责
2014/01/31 职场文书
岗位聘任书范文
2014/03/29 职场文书
副总经理任命书
2014/06/05 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL