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 相关文章推荐
文本框水印提示效果的简单实现代码
Feb 22 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
Aug 06 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
Node.JS更改Windows注册表Regedit的方法小结
Aug 18 Javascript
javascript基于定时器实现进度条功能实例
Oct 13 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 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仿discuz分页效果代码
2008/10/02 PHP
php注销代码(session注销)
2012/05/31 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
js使用心得分享
2015/01/13 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
基于对象合并功能的实现示例
2017/10/10 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
python实现划词翻译
2020/04/23 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
Django model update的多种用法介绍
2020/03/28 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
python Timer 类使用介绍
2020/12/28 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
经管应届生求职信
2013/11/17 职场文书
会计人员岗位职责
2014/03/19 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
班委竞选稿范文
2015/11/21 职场文书
安全生产标语口号
2015/12/26 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python