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实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
Apr 08 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
微信小程序自定义扫码功能界面的实现代码
Jul 02 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
PHP asXML()函数讲解
2019/02/03 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
对Django外键关系的描述
2019/07/26 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python 解析xml文件的示例
2020/09/29 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
公司合作意向书
2014/04/01 职场文书
社保委托书怎么写
2014/08/02 职场文书
小学运动会入场词
2015/07/18 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android