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 相关文章推荐
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
Jan 23 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
vue2.x+webpack快速搭建前端项目框架详解
Nov 30 Javascript
js判断文件类型大小并给出提示的实现方法
Jan 03 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
layui table 表格模板按钮的实例代码
Sep 21 Javascript
Vue+Element-U实现分页显示效果
Nov 15 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
php防注
2007/01/15 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
python cookielib 登录人人网的实现代码
2012/12/19 Python
Python中encode()方法的使用简介
2015/05/18 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
多个应用共存的Django配置方法
2018/05/30 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
在python中使用nohup命令说明
2020/04/16 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
教师档案管理制度
2014/01/23 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫