js自定义input文件上传样式

 更新时间:2018年10月26日 08:36:17   作者:huanzi-qch  
这篇文章主要为大家详细介绍了js自定义input文件上传样式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

文件上传是我们经常会用到的功能,但是原生的input样式太丑了,能不能自定义一个input文件上传样式呢?

我这里写了两种方法,form表单提交跟ajax异步提交都没有问题,自动上传或者点击上传按钮上传也都没问题

先看效果:

代码贴出来: 

方法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效果啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • uniapp实现横向滚动选择日期

    uniapp实现横向滚动选择日期

    这篇文章主要为大家详细介绍了uniapp实现横向滚动选择日期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • 深入浅析JavaScript中的RegExp对象

    深入浅析JavaScript中的RegExp对象

    正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用作按照“给定模式”匹配文本的工具。下面通过本文给大家分享js 中的regexp对象,需要的朋友参考下吧
    2017-09-09
  • 打开新窗口关闭当前页面不弹出关闭提示js代码

    打开新窗口关闭当前页面不弹出关闭提示js代码

    打开新窗口关闭当前页面时总是弹出提示框,有没有办法避免它的弹出呢,答案是可以的接下来为大家分享一个方法可以解决此问题,感兴趣的你可不要错过了哈,希望可以帮助到你
    2013-03-03
  • 小程序瀑布流组件实现翻页与图片懒加载

    小程序瀑布流组件实现翻页与图片懒加载

    这篇文章主要介绍了小程序瀑布流组件实现翻页与图片懒加载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Echarts基本用法_动力节点Java学院整理

    Echarts基本用法_动力节点Java学院整理

    这篇文章主要介绍了Echarts基本用法,详解的介绍了Echarts的基本用法和实例,有兴趣的可以了解一下
    2017-08-08
  • 用js读、写、删除Cookie代码续篇

    用js读、写、删除Cookie代码续篇

    本文是上一篇文章《用js读、写、删除Cookie代码分享及详细注释说明》发现了些问题,进行分析解决,推荐给大家
    2014-12-12
  • 通过JavaScript使Div居中并随网页大小改变而改变

    通过JavaScript使Div居中并随网页大小改变而改变

    自己的页面太难看了,要居中没居中,要颜色没颜色,但是无论是怎么样都得使登录的框居中吧,下面与大家分享下通过JavaScript可以简单的使Div在页面上居中,随着网页大小的改变做出相应的改变
    2013-06-06
  • ionic实现底部分享功能

    ionic实现底部分享功能

    这篇文章主要为大家详细介绍了ionic实现底部分享功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 利用JavaScript实现仿京东放大镜效果

    利用JavaScript实现仿京东放大镜效果

    这篇文章主要为大家详细介绍了如何利用JavaScript实现仿京东放大镜特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Rxjs tap 操作符的使用场景示例

    Rxjs tap 操作符的使用场景示例

    这篇文章主要为大家介绍了Rxjs tap 操作符的使用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论