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函数
Dec 22 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
Jan 17 Javascript
javascript中一些util方法汇总
Jun 10 Javascript
详解JavaScript中双等号引起的隐性类型转换
May 30 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
Aug 16 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
ionic使用angularjs表单验证(模板验证)
Dec 12 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
解决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开发工具之vs2005图解
2008/01/12 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
JavaScript中的事件处理
2008/01/16 Javascript
JS 继承实例分析
2008/11/04 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
高中三年学习生活的自我评价
2013/10/10 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
工业设计专业自荐书
2014/06/05 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js