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 相关文章推荐
js 学习笔记(三)
Dec 29 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
javascript中 try catch用法
Aug 16 Javascript
使用Angular.js开发的注意事项
Oct 19 Javascript
详解JS中的attribute属性
Apr 25 Javascript
jQuery实现键盘回车搜索功能
Jul 25 jQuery
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
浅谈layui 表单元素的选中问题
Oct 25 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
js 操作符实例代码
2009/10/24 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
三查三看党性分析材料
2014/02/18 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
手残删除python之后的补救方法
2021/06/26 Python
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python