zoukankan      html  css  js  c++  java
  • 移动端图片上传

    HTML:

    <div id="imgContainer" style="margin: 10px;">

               <div id="imgFiles" style="float:left;">

                   <!-- 过滤掉所有非图片的文件 -->
                          <input name="" type="file" accept="image/*" onchange="showImg();" />
                </div>
    </div>
     
    CSS:
    /* 图片化文件上传按钮 */
            #imgFiles {
                height:28vw;
                 28vw;
                background:url(./image/upload.png) center no-repeat;
                background-size: contain;
                position:relative;
                margin-left:1vw;
            }
            #imgFiles input {
                height: 28vw;
                 28vw;
                position:absolute;
                right:0;
                top:0;
                opacity: 0;
                filter:alpha(opacity=0);
                cursor:pointer;
            }
     
    JS:
    // 2.7 图片文件上传(imgFiles)
            function showImg() {
                // 判断,如果文件存在,则进行文件读取显示(防止点击取消按钮出现bug)
                if($("#imgFiles input")[0].files[0]) {
                    imgFiles.push($("#imgFiles input")[0].files[0]);
                    getImgsByFileReader(document.getElementById("imgContainer"), imgFiles);
                }
            }
            
            // 使用FileReader读取file实例并显示图片
            function getImgsByFileReader(el, files) {
                // 每次都是imgFiles的重新渲染,所以需要先把已渲染的清空
                $(el).find(".img").remove();
                // 循环渲染显示
                for (var i = 0; i < files.length; i++) {
                    //父盒子
                    let div = document.createElement("div");
                    $(el).prepend(div);
                    div.setAttribute("style","float:left;position:relative;margin-left:1vw;");
                    div.setAttribute("data-name",files[i].name);
                    div.setAttribute("class","img");
                    //子盒子img
                    let img = document.createElement('img')
                    $(div).append(img);
                    img.setAttribute('style', ' 26vw; height: 26vw; vertical-align: middle; margin: 2vw;')
                    //子盒子span
                    let span = document.createElement("span");
                    let x = document.createTextNode("x");
                    $(span).append(x);
                    $(div).append(span);
                    span.setAttribute("style","4vw;height:4vw;position:absolute;right:0vw;top:0vw;background:rgba(0,0,0,.2);border-radius:50%;text-align:center;line-height:4vw;color:#fff;");
                    
                    var reader = new FileReader()
                    reader.onload = function(e) {
                        img.src = e.target.result
                    }
                    reader.readAsDataURL(files[i]) 
                }
                // 图片span点击删除
                $("#imgContainer span").click(function(){
                    let name = $(this).parent().attr("data-name");
                    let index = imgFiles.findIndex(function(item,index){
                        return item.name == name;
                    })
                    imgFiles.splice(index,1);
                    $(this).parent().remove();
                })
            }
  • 相关阅读:
    判断是否是移动端
    html上传文件类型限制accept的全部属性值
    前端cropper裁剪图像大小(原创)
    eslint加不加分号
    手机浏览器使用rem 自适应html宽度大小
    DOMContentLoaded与load的区别
    ES6语法find查找匹配数组
    React的JSX语法
    React的基本使用
    React简介
  • 原文地址:https://www.cnblogs.com/yccg990118/p/11982878.html
Copyright © 2011-2022 走看看