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+php实现搜索框自动提示
Nov 28 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
JS实现文档加载完成后执行代码
Jul 09 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
利用纯Vue.js构建Bootstrap组件
Nov 03 Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
Vue 实现树形视图数据功能
May 07 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
node+multer实现图片上传的示例代码
Feb 18 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(5) 类和对象
2010/02/16 PHP
php判断变量类型常用方法
2012/04/24 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python中字符串的修改及传参详解
2016/11/30 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Django 路由控制的实现代码
2018/11/08 Python
Python中extend和append的区别讲解
2019/01/24 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Python中bisect的使用方法
2019/12/31 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
小学教师寄语大全
2014/04/03 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android