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 09 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
Jquery的基本对象转换和文档加载用法实例
Feb 25 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
jQuery基于BootStrap样式实现无限极地区联动
Aug 26 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
JS实现简易留言板(节点操作)
Mar 16 Javascript
Vue组件跨层级获取组件操作
Jul 27 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版(2)
2006/10/09 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
php图片添加水印例子
2016/07/20 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
详解React 16 中的异常处理
2017/07/28 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Django实现跨域请求过程详解
2019/07/25 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
组织关系转移介绍信
2014/01/16 职场文书
小学中秋节活动方案
2014/02/06 职场文书
考核工作实施方案
2014/03/30 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书