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页面刷新与弹出窗口问题的解决方法
Mar 02 Javascript
Javascript面向对象扩展库代码分享
Mar 27 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
node.js中的fs.futimesSync方法使用说明
Dec 17 Javascript
jQuery简单实现验证邮箱格式
Jul 15 Javascript
vue 2.0组件与v-model详解
Mar 27 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 Javascript
深入剖析JavaScript instanceof 运算符
Jun 14 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
Aug 01 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
桌面中心(一)创建数据库
2006/10/09 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
javascript 简练的几个函数
2009/08/29 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
webpack4+react多页面架构的实现
2018/10/25 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Python datetime包函数简单介绍
2019/08/28 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python random模块的使用示例
2020/10/10 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
简单的大学生自我鉴定
2014/02/18 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
员工担保书范本
2015/09/22 职场文书
2016中秋节广告语
2016/01/28 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python