多图片上传、拖拽上传、拖动排序、图片预览效果

多图片上传、拖拽上传、拖动排序、图片预览效果


效果如下:


多图片上传、拖拽上传、拖动排序、图片预览效果


直接将如下代码复制到html文件中运行即可:


<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>jquery多图片上传、拖拽上传、拖动排序、图片预览效果</title>

<!--放到项目中写法-->

<script src="./jquery.min.js"></script>

<script src="./Sortable.min.js"></script>

<!--测试写法-->

<script src="https://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>

<script src="https://cdn.bootcss.com/Sortable/1.8.3/Sortable.js"></script>

<style>

 .imageDiv {

display:inline-block;

width:160px;

height:130px;

-webkit-box-sizing:border-box;

-moz-box-sizing:border-box;

box-sizing:border-box;

border:1px dashed darkgray;

background:#f8f8f8;

position:relative;

overflow:hidden;

margin:10px

}

.cover {

    position: absolute;

    z-index: 1;

    top: 0px;

    width: 160px;

    height: 130px;

    background-color: rgba(0,0,0,.3);

    display: none;

    cursor: pointer;

}

.cover .delbtn {

    color: red;

    padding: 1px 5px;

    background-color: #faffbd;

    border: 1px solid #faffbd;

    border-radius: 3px;

}

.imageDiv:hover .cover {

display:block;

}

.addImages {

display:inline-block;

width:360px;

height:130px;

-webkit-box-sizing:border-box;

-moz-box-sizing:border-box;

box-sizing:border-box;

border:1px dashed darkgray;

background:#f8f8f8;

position:relative;

overflow:hidden;

margin:10px;

}

.text-detail {

margin-top:40px;

text-align:center;

}

.text-detail span {

font-size:40px;

}

.file {

position:absolute;

top:0;

left:0;

width:100%;

height:100%;

opacity:0;

}

.sortable-ghost {

               opacity: 0.4;

               background-color: #F4E2C9;

          }

 

          .block__list li {

               cursor: pointer;

 

          }

</style>

</head>

<body>

<form method="post" action="" id="passForm" enctype="multipart/form-data" multipart="">

    

    <div id="Pic_pass">

<!--多图片标题-->

        <h1>多图片上传、拖拽上传、拖动排序、图片预览效果</h1>

<!--多图片上传提示信息-->

<div>

<span style="color: red">注意:上传的图片必须是以.png/.jpeg/.gif/.jpg为后缀且每张图片大小不能超过4M。上传后可以拖动图片进行排序。</span>

</div>

        <!--图片上传按钮区域-->

        <div class="addImages">

            <input type="file" class="file" id="fileInput" multiple="" accept="image/png, image/jpeg, image/gif, image/jpg">

            <div class="text-detail">

                <span>+</span>

                 <p>点击“+”上传图片或拖拽到“+”上传图片</p>

            </div>

        </div>

<!--图片预览区域-->

<div id="foo"></div>

    </div>

    <div class="msg" style="display: none;"></div>

</form>

<script>

//图片上传预览功能

var userAgent = navigator.userAgent; //用于判断浏览器类型

 

$(".file").change(function() {

debugger

    //获取选择图片的对象

    var docObj = $(this)[0];

    var foo = $("#foo");

    //得到所有的图片文件

    var fileList = docObj.files;

//添加时间戳

var dateTime = new Date().getTime();

//fileList.lastModified =dateTime;

    //循环遍历

    for (var i = 0; i < fileList.length; i++) {

        //动态添加html元素

        var picHtml = "<div class='imageDiv' > <img id='img_"+ dateTime + "_" + fileList[i].name + "' /> <div class='cover'><i class='delbtn'>删除</i></div></div>";

        console.log(picHtml);

        //foo.prepend(picHtml);//prepend() - 在被选元素的开头插入内容

foo.append(picHtml);//append() - 在被选元素的结尾插入内容

        //获取图片imgi的对象

        var imgObjPreview = document.getElementById("img_"+ dateTime + "_" + fileList[i].name);

        if (fileList && fileList[i]) {

            //图片属性

            imgObjPreview.style.display = 'block';

            imgObjPreview.style.width = '160px';

            imgObjPreview.style.height = '130px';

            //imgObjPreview.src = docObj.files[0].getAsDataURL();

            //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要以下方式

            if (userAgent.indexOf('MSIE') == -1) {

                //IE以外浏览器

                imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]); //获取上传图片文件的物理路径;

                console.log(imgObjPreview.src);

                // var msgHtml = '<input type="file" id="fileInput" multiple/>';

            } else {

                //IE浏览器

                if (docObj.value.indexOf(",") != -1) {

                    var srcArr = docObj.value.split(",");

                    imgObjPreview.src = srcArr[i];

                } else {

                    imgObjPreview.src = docObj.value;

                }

            }

        }

    }

 

    /*删除功能*/

    $(".delbtn").click(function() {

        var imageDiv = $(this);

        imageDiv.parents(".imageDiv").remove();

    });

});

 

//拖动排序

Sortable.create(document.getElementById('foo'), {

               animation: 150, //动画参数

               onAdd: function (evt) {   //拖拽时候添加有新的节点的时候发生该事件

                    console.log('onAdd.foo:', [evt.item, evt.from]);

               },

               onUpdate: function (evt) {  //拖拽更新节点位置发生该事件

                    console.log('onUpdate.foo:', [evt.item, evt.from]);

               },

               onRemove: function (evt) {   //删除拖拽节点的时候促发该事件

                    console.log('onRemove.foo:', [evt.item, evt.from]);

               },

               onStart: function (evt) {  //开始拖拽出发该函数

                    console.log('onStart.foo:', [evt.item, evt.from]);

               },

               onSort: function (evt) {  //发生排序发生该事件

                    console.log('onSort.foo:', [evt.item, evt.from]);

               },

               onEnd: function (evt) { //拖拽完毕之后发生该事件

                    console.log('onEnd.foo:', [evt.item, evt.from]);

               }

          });

</script>

</body>

</html>

 

转载至:http://www.chuaisou.com/index.html#/app/itw?rt=1&pn=I1600235K8803588