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中的操作符==与===介绍
Dec 31 Javascript
jquery搜索框效果实现方法
Jan 16 Javascript
js给selected添加options的方法
May 06 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
JS字符串常用操作方法实例小结
Jun 24 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
jQuery实现查看图片功能
Dec 01 jQuery
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
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编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
详解Django框架中的视图级缓存
2015/07/23 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python遍历numpy数组的实例
2018/04/04 Python
python挖矿算力测试程序详解
2019/07/03 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Python内置函数及功能简介汇总
2020/10/13 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
高中军训感言800字
2014/03/05 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
代理词怎么写
2015/05/25 职场文书
教师节晚会主持词
2015/06/30 职场文书
python编写五子棋游戏
2021/05/25 Python
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android