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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
JS时间特效最常用的三款
Aug 19 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
js如何打印object对象
Oct 16 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
vue-router的两种模式的区别
May 30 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中的Class的几点个人看法
2006/10/09 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
python常用函数详解
2016/09/13 Python
wxPython色环电阻计算器
2019/11/18 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
python小白学习包管理器pip安装
2020/06/09 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
初中化学教学反思
2014/01/23 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
人民检察院起诉书
2015/05/20 职场文书
现实表现证明材料
2015/06/19 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android