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数组组合成字符串的脚本
Jan 06 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
基于jquery 的一个progressbar widge
Oct 29 Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
使用jquery动态加载js文件的方法
Dec 24 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 Javascript
一行JavaScript代码如何实现瀑布流布局
Dec 11 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之Memcache学习笔记
2013/06/17 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
srcElement表格样式
2006/09/03 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
python输出指定月份日历的方法
2015/04/23 Python
在Python中使用成员运算符的示例
2015/05/13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
印刷工程专业应届生求职信
2013/09/29 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
党员志愿者活动方案
2014/08/28 职场文书
个人投资合作协议书
2014/10/12 职场文书
机关职员工作检讨书
2014/10/23 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
校运会班级霸气口号
2015/12/24 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
Python学习之异常中的finally使用详解
2022/03/16 Python
nginx之内存池的实现
2022/06/28 Servers