移动端图片上传预览

前天要做wap版的图片上传预览,找了好半天才找到比较适合的插件,我在该插件的基础上修改了一些东西,比如:上传后的图片删除后不能再添加、不能限制上传图片的数量。

input虽然有multiple(多选),但是android目前是不支持的。

该插件控制不了不能上传同一张图片,暂时没有思路解决这个问题(;′д`)ゞ

  1 <!DOCTYPE html>
  2 <html lang="zh-cn">
  3
  4     <head>
  5         <meta charset="utf-8">
  6         <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  8         <script type="text/javascript" src="jquery-1.7.2.min.js" ></script>
  9         <title>多图片上传</title>
 10
 11         <style>
 12             * {
 13                 margin: 0;
 14                 padding: 0;
 15             }
 16             /*图片上传*/
 17
 18             html,
 19             body {
 20                 width: 100%;
 21                 height: 100%;
 22             }
 23
 24             .container {
 25                 width: 100%;
 26                 height: 100%;
 27                 overflow: auto;
 28                 clear: both;
 29             }
 30
 31             .z_photo {
 32                 width: 5rem;
 33                 height: 5rem;
 34                 padding: 0.3rem;
 35                 overflow: auto;
 36                 clear: both;
 37                 margin: 1rem auto;
 38                 border: 1px solid #555;
 39             }
 40
 41             .z_photo img {
 42                 width: 1rem;
 43                 height: 1rem;
 44             }
 45
 46             .z_addImg {
 47                 float: left;
 48                 margin-right: 0.2rem;
 49             }
 50
 51             .z_file {
 52                 width: 1rem;
 53                 height: 1rem;
 54                 background: url(z_add.png) no-repeat;
 55                 background-size: 100% 100%;
 56                 float: left;
 57                 margin-right: 0.2rem;
 58             }
 59
 60             .z_file input::-webkit-file-upload-button {
 61                 width: 1rem;
 62                 height: 1rem;
 63                 border: none;
 64                 position: absolute;
 65                 outline: 0;
 66                 opacity: 0;
 67             }
 68
 69             .z_file input#file {
 70                 display: block;
 71                 width: auto;
 72                 border: 0;
 73                 vertical-align: middle;
 74             }
 75             /*遮罩层*/
 76
 77             .z_mask {
 78                 width: 100%;
 79                 height: 100%;
 80                 background: rgba(0, 0, 0, .5);
 81                 position: fixed;
 82                 top: 0;
 83                 left: 0;
 84                 z-index: 999;
 85                 display: none;
 86             }
 87
 88             .z_alert {
 89                 width: 3rem;
 90                 height: 2rem;
 91                 border-radius: .2rem;
 92                 background: #fff;
 93                 font-size: .24rem;
 94                 text-align: center;
 95                 position: absolute;
 96                 left: 50%;
 97                 top: 50%;
 98                 margin-left: -1.5rem;
 99                 margin-top: -2rem;
100             }
101
102             .z_alert p:nth-child(1) {
103                 line-height: 1.5rem;
104             }
105
106             .z_alert p:nth-child(2) span {
107                 display: inline-block;
108                 width: 49%;
109                 height: .5rem;
110                 line-height: .5rem;
111                 float: left;
112                 border-top: 1px solid #ddd;
113             }
114
115             .z_cancel {
116                 border-right: 1px solid #ddd;
117             }
118         </style>
119     </head>
120
121     <body>
122
123         <div class="container">
124             <!--    照片添加    -->
125             <div class="z_photo" id="z_photo">
126                 <div class="z_file">
127                     <input class="huodong-msg" type="file" name="file" id="file" value="" accept="image/jpg,image/jpeg,image/png" multiple onchange="imgChange(‘z_photo‘,‘z_file‘);" />
128                 </div>
129             </div>
130
131             <!--遮罩层-->
132             <div class="z_mask">
133                 <!--弹出框-->
134                 <div class="z_alert">
135                     <p>确定要删除这张图片吗?</p>
136                     <p>
137                         <span class="z_cancel">取消</span>
138                         <span class="z_sure">确定</span>
139                     </p>
140                 </div>
141             </div>
142         </div>
143
144         <script type="text/javascript">
145             //px转换为rem
146             (function(doc, win) {
147                 var docEl = doc.documentElement,
148                     resizeEvt = ‘orientationchange‘ in window ? ‘orientationchange‘ : ‘resize‘,
149                     recalc = function() {
150                         var clientWidth = docEl.clientWidth;
151                         if(!clientWidth) return;
152                         if(clientWidth >= 640) {
153                             docEl.style.fontSize = ‘100px‘;
154                         } else {
155                             docEl.style.fontSize = 100 * (clientWidth / 640) + ‘px‘;
156                         }
157                     };
158
159                 if(!doc.addEventListener) return;
160                 win.addEventListener(resizeEvt, recalc, false);
161                 doc.addEventListener(‘DOMContentLoaded‘, recalc, false);
162             })(document, window);
163
164             function imgChange(obj1, obj2) {
165                 var fileNum1 = 0;
166                 var fileNum2 = event.target.files.length;
167                 var a = document.getElementById("z_photo"),
168                     b = a.getElementsByTagName("div");
169                 fileNum1 = b.length;
170                 var j = fileNum1 + fileNum2 - 1;
171                 //上传图片个数限制
172                 if(fileNum1 > 5 || j > 5) {
173                     alert("最多只能上传5张图片!");
174                     return;
175                 }
176                 //获取点击的文本框
177                 var file = document.getElementById("file");
178                 //存放图片的父级元素
179                 var imgContainer = document.getElementsByClassName(obj1)[0];
180                 //获取的图片文件
181                 var fileList = file.files;
182                 //文本框的父级元素
183                 var input = document.getElementsByClassName(obj2)[0];
184                 var imgArr = [];
185                 //遍历获取到得图片文件
186                 for(var i = 0; i < fileList.length; i++) {
187                     var imgUrl = window.URL.createObjectURL(file.files[i]);
188                     imgArr.push(imgUrl);
189                     var img = document.createElement("img");
190                     img.setAttribute("src", imgArr[i]);
191                     var imgAdd = document.createElement("div");
192                     var imgAddInput = document.createElement("input");
193                     imgAddInput.setAttribute("type", "hidden");
194                     imgAddInput.setAttribute("value", imgArr[i]);
195                     imgAdd.appendChild(imgAddInput);
196                     imgAdd.setAttribute("class", "z_addImg");
197                     imgAdd.appendChild(img);
198                     imgContainer.appendChild(imgAdd);
199
200                 };
201                 file.classList.add("z_cl");
202                 imgRemove();
203             };
204
205             //删除图片
206             function imgRemove() {
207                 var imgList = document.getElementsByClassName("z_addImg");
208                 var mask = document.getElementsByClassName("z_mask")[0];
209                 var cancel = document.getElementsByClassName("z_cancel")[0];
210                 var sure = document.getElementsByClassName("z_sure")[0];
211                 var file = document.getElementById("file");
212                 for(var j = 0; j < imgList.length; j++) {
213                     imgList[j].index = j;
214                     imgList[j].onclick = function() {
215                         var t = this;
216                         mask.style.display = "block";
217                         cancel.onclick = function() {
218                             mask.style.display = "none";
219                         };
220                         sure.onclick = function() {
221                             mask.style.display = "none";
222
223                             if(file.classList.contains("z_cl")) {
224                                 file.outerHTML = file.outerHTML;
225                             }
226
227                             t.parentNode.removeChild(t);
228                             file.classList.remove("z_cl");
229                         };
230
231                     }
232                 };
233             };
234
235
236         </script>
237     </body>
238
239 </html>

( ?′ω`? )用到的图片  

时间: 2024-09-29 04:33:02

移动端图片上传预览的相关文章

移动端 js 实现图片上传 预览

方法一: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试页面</title> <script type="text/javascript"> /

JS实现图片上传预览效果:方法一

<script type="text/javascript"> //处理file input加载的图片文件 $(document).ready(function(e) { //判断浏览器是否有FileReader接口 if(typeof FileReader =='undefined') { /*$("#images_show").css({'background':'none'}).html('亲,您的浏览器还不支持HTML5的FileReader接口

JavaScript 图片上传预览效果

图片上传预览是一种在图片上传之前对图片进行本地预览的技术.使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验.但随着浏览器安全性的提高,要实现图片上传预览也越来越困难.不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现.例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法.但在opera.safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览.在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享.上次写的简便无刷新文

js:s上次预览,上传图片预览,图片上传预览

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

html,图片上传预览,input file获取文件等相关操作

input file常用方法: var obj=document.getElementById("upimage"); var file=obj.files[0];//获取文件数据 var path=obj.value;//获取文件当前路径 var size=obj.files[0].size;//获取文件大小 var prefix=path.substring( path.lastIndexOf('\\')+1 );//获取文件名的前缀名(文件格式) var suffix=path.

js前端实现多图图片上传预览

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试页面</title> <script type="text/javascript"> //下面用于

Javascript之图片上传预览

使用Javascript之图片上传预览,我们无需上传到服务器中,兼容所有浏览器. 关键方法是使用微软库filter:progid:DXImageTransform.Microsoft.AlphaImageLoader来生成本地图片预览图的. <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <

多图片上传预览功能

//下面用于多图片上传预览功能 function setImagePreviews(avalue) { var docObj = document.getElementById("doc"); var dd = document.getElementById("dd"); dd.innerHTML = ""; var fileList = docObj.files; for (var i = 0; i < fileList.length;

图片上传-预览

<html><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>javascript实现图片上传本地预览图片的代码-php自学网</title> <script type="text/javascript"> function checkFiles(str, ex