js实现上传按钮并显示缩略图小轮子


Posted in Javascript onMay 04, 2020

前言

造这个小轮子的起因是因为默认提供的上传文件的按钮属实丑陋了点,而且还不能直接修改这个按钮的样式,所以就打算直接搞个小轮子方便日后需要时使用。使用原生js实现。那么直接上效果图。

实现功能:

  • 显示上传图片缩略图
  • 实现上传图片格式限制

预览效果图如下

js实现上传按钮并显示缩略图小轮子

代码实现

html代码

<html>
 <head>
 <meta charset="utf-8" />
 <title>uploalFileButton</title>
 <link rel="stylesheet" href="style.css" />
 </head>
 <body>
 <div class="file-container">
 <div class="file-box">
 <input type="file" class="file-btn" accept="image/png,image/jpeg,image/gif" id="file" />
 <text>选择文件</text>
 </div>
 <span id="showFileName"></span>
 <span id="fileerrorTip"></span>
 <div class="show_image">
 <img src="" id="file_img" />
 </div>
 </div>
 
 <script type="text/javascript" src="script.js"></script>
 </body>
</html>

JavaScript代码

(function(){
 var fileBtn = document.getElementById('file');
 var showName = document.getElementById('showFileName');
 var errorTip = document.getElementById('fileerrorTip');
 var fileImg = document.getElementById('file_img');

 fileBtn.onchange = function(){
 try{
 var fileName = this.files[0].name;
 // 限制图片上传类型
 if(fileName.indexOf("jpg") != -1 || fileName.indexOf("png") != -1) {
 errorTip.innerHTML = "";
 showName.innerHTML = fileName;
 //显示预览图片
 var file = this.files[0];
 var reader = new FileReader();
 reader.readAsDataURL(file);
 reader.onloadend = function(e) {
 fileImg.src = e.target.result;
 fileImg.style["display"] = "unset";
 };
 } else {
 showName.innerHTML = "";
 errorTip.innerHTML = "您未上传文件,或者您上传文件类型有误!";
 return false
 }
 }catch(e){}
 }
})()

CSS代码

.file-container{
 display: inline-block;
}

.file-box{
 display: inline-block;
 position: relative;
 padding:8px 25px;
 overflow: hidden;
 color:#fff;
 background-color: #4387CD;
 border-radius: 5px;
 cursor: pointer;
 vertical-align: bottom;
}

.file-btn{
 position: absolute;
 width: 100%;
 height: 100%;
 top: 0;
 left: 0;
 outline: none;
 filter:alpha(opacity=0);
 opacity: 0;
}

#showFileName, #fileerrorTip{
 vertical-align: bottom;
}

.show_image{
 width: 100px;
 padding: 5px;
 margin: 5px 0;
 border: 1px solid #ccc;
 border-radius: 5px;
}

.show_image img{
 display: none;
 width: 100px;
}

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

Javascript 相关文章推荐
javascript 在firebug调试时用console.log的方法
May 10 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 Javascript
JS中如何实现点击a标签返回页面顶部的问题
Jan 19 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
Vue项目查看当前使用的elementUI版本的方法
Sep 27 Javascript
bootstrap datepicker的基本使用教程
Jul 09 Javascript
微信小程序页面上下滚动效果
Nov 18 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 Javascript
ES6字符串的扩展实例
Dec 21 Javascript
js代码实现轮播图
May 04 #Javascript
原生js实现轮播图特效
May 04 #Javascript
jquery实现手风琴案例
May 04 #jQuery
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
May 03 #Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 #Javascript
vue自定义标签和单页面多路由的实现代码
May 03 #Javascript
JavaScript函数重载操作实例浅析
May 02 #Javascript
You might like
收集的DedeCMS一些使用经验
2007/03/17 PHP
深入php内核之php in array
2015/11/10 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python多进程共享变量
2016/04/06 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
环境建议书
2015/02/04 职场文书
感恩节寄语2015
2015/03/24 职场文书
办公用品质量保证书
2015/05/11 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL