H5怎样做出图片拖拽上传预览组件

这次给大家带来H5怎样做出图片拖拽上传预览组件,H5做出图片拖拽上传预览组件的注意事项有哪些,下面就是实战案例,一起来看一下。

H5中拖拽事件有:
[ – ] DragDrop:拖放完成,也就是鼠标拖入对象并在拖放区域释放。
[ – ] DragEnter :拖放进入,也就是鼠标拖放对象进入拖放区域。
[ – ] DragLeave:离开拖放区域。
[ – ] DragOver :拖放对象悬浮于拖放区域,在拖放区域内移动时多次触发。

1.拖拽文件获取文件信息

示例

                                        .example {                padding: 10px;                border: 1px solid #ccc;            }                        #drop_zone {                border: 2px dashed #bbb;                -moz-border-radius: 5px;                -webkit-border-radius: 5px;                border-radius: 5px;                padding: 25px;                text-align: center;                font: 20pt bold 'Vollkorn';                color: #bbb;            }                        
将文件拖放到此处
function handleFileSelect(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 var files = evt.dataTransfer.files;//获取文件集 var output = []; for(var i = 0, f; f = files[i]; i++) { output.push('
  • ', escape(f.name), ' (', f.type || 'n/a', ') - ', f.size, ' bytes, last modified: ', f.lastModifiedDate.toLocaleDateString(), '
  • '); } document.getElementById('list').innerHTML = '
      ' + output.join('') + '
    '; } function handleDragOver(evt) { evt.stopPropagation(); evt.preventDefault(); evt.dataTransfer.dropEffect = 'copy'; } var dropZone = document.getElementById('drop_zone'); dropZone.addEventListener('dragover', handleDragOver, false); dropZone.addEventListener('drop', handleFileSelect, false); //body中阻止 拖拽事件防止拖拽错误 document.body.addEventListener('dragover', function(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 return false; }, false); document.body.addEventListener('drop', function(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 return false; }, false);

    登录后复制

    2.限制文件大小与文件格式

                                            .example {                padding: 10px;                border: 1px solid #ccc;            }                        #drop_zone {                border: 2px dashed #bbb;                -moz-border-radius: 5px;                -webkit-border-radius: 5px;                border-radius: 5px;                padding: 25px;                text-align: center;                font: 20pt bold 'Vollkorn';                color: #bbb;            }                        
    将文件拖放到此处
    function handleFileSelect(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 var files = evt.dataTransfer.files;//获取文件集 var output = []; for(var i = 0, f; f = files[i]; i++) { if(f.size<1024*1024*2&&(f.type=="image/png"||f.type=="image/jpeg")){//<===这里 output.push('
  • ', escape(f.name), ' (', f.type || 'n/a', ') - ', f.size, ' bytes, last modified: ', f.lastModifiedDate.toLocaleDateString(), '
  • '); } } document.getElementById('list').innerHTML = '
      ' + output.join('') + '
    '; } function handleDragOver(evt) { evt.stopPropagation(); evt.preventDefault(); evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy. } var dropZone = document.getElementById('drop_zone'); dropZone.addEventListener('dragover', handleDragOver, false); dropZone.addEventListener('drop', handleFileSelect, false); //body中阻止 拖拽事件防止拖拽错误 document.body.addEventListener('dragover', function(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 return false; }, false); document.body.addEventListener('drop', function(evt) { evt.stopPropagation(); //阻止默认事件 evt.preventDefault(); //阻止默认事件 return false; }, false);

    登录后复制

    3.显示缩略图与动态增删效果

    示例

                        简易上传预览                     #drop_zone {                display: block;                border: 2px dashed #BBB;                padding: 25px 5px;                text-align: center;                font-size: 20pt;                color: #BBB;                border-radius: 5px;            }                        #drop_zone.hovering {                -webkit-box-shadow: inset 0px 0px 50px #BBB;                -moz-box-shadow: inset 0px 0px 50px #BBB;                -o-box-shadow: inset 0px 0px 50px #BBB;                box-shadow: inset 0px 0px 50px #BBB;            }                        #file-upload-box {                margin: 40px 25px;                padding: 10px;                border: 1px solid #BBB;            }                        #description:first-line {                margin-left: 42px;            }                        #output_area {                text-align: center;                display: flex;                flex-wrap: wrap;                align-content: space-between;                position: absolute;                left: 0;                right: 0;                top: 106px;                overflow: auto;                bottom: 0;            }                        #file-upload-box {                position: absolute;                top: 45px;                bottom: 45px;                left: 20px;                right: 20px;                background-color: #fff;                overflow: auto;            }                        .upload-img-itme {                color: #333;                width: 170px;                margin: 10px;                color: #333;                flex: 1;            }                        .upload-img-itme a.rimg-name {                overflow: hidden;                text-overflow: ellipsis;                white-space: nowrap;                padding: 5px;                display: block;            }                        .d-image {                box-shadow: 0 0 10px #bbb;                border-radius: 20px;                overflow: hidden;                width: 170px;                height: 170px;                display: inline-block;                z-index: 344;                background-color: #cecece;                position: relative;                transition: all 1s;                -moz-transition: all 1s;                -webkit-transition: all 1s;                -o-transition: all 1s;                cursor: pointer;            }                        .d-image:hover:after {                display: block;            }                        .d-image:after {                content: "×";                font-size: 44px;                text-align: center;                width: 50%;                margin: auto;                position: absolute;                top: 50%;                display: none;                left: 50%;                -webkit-transform: translate(-50%, -50%);                -ms-transform: translate(-50%, -50%);                transform: translate(-50%, -50%);            }                        .d-image:hover> img {                -webkit-filter: blur(5px);                -moz-filter: blur(5px);                -ms-filter: blur(5px);                filter: blur(5px);            }            

    登录后复制

                       
    var ImgType = ["gif", "jpeg", "jpg", "bmp", "png", "ico", "webp"]; function getFileUrl(fileObj) { return window.URL.createObjectURL(fileObj); } //拖拽功能 var output = document.getElementById('output_area'); var dropZone = document.getElementById('drop_zone'); if(!(('draggable' in dropZone) && ('ondragenter' in dropZone) && ('ondragleave' in dropZone) && ('ondragover' in dropZone) && window.File)) { document.getElementById('error_msg').style.display = 'block'; document.getElementById('demo_area').style.display = 'none'; } else { function handleFileDragEnter(e) { e.stopPropagation(); e.preventDefault(); this.classList.add('hovering'); } function handleFileDragLeave(e) { e.stopPropagation(); e.preventDefault(); this.classList.remove('hovering'); } function handleFileDragOver(e) { e.stopPropagation(); e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; } function handleFileDrop(e) { e.stopPropagation(); e.preventDefault(); this.classList.remove('hovering'); FilesGetImgSv(e.dataTransfer.files); } dropZone.addEventListener('dragenter', handleFileDragEnter, false); dropZone.addEventListener('dragleave', handleFileDragLeave, false); dropZone.addEventListener('dragover', handleFileDragOver, false); dropZone.addEventListener('drop', handleFileDrop, false); } //<input function handleFileSelect(evt) { FilesGetImgSv(evt.target.files); } document.getElementById('files').addEventListener('change', handleFileSelect, false); //图片文件 过滤 显示 function FilesGetImgSv(files) {//获取文件 for(var i = 0, f; f = files[i]; i++) { if(RegExp("\.(" + ImgType.join("|") + ")$", "i").test(f.name.toLowerCase())) { //这里是简单后缀验证,可添加f.type验证格式 f.BolbUrl = getFileUrl(f); demo.ImageLs.push(f); } } reloadDiv(); } function reloadDiv(){//刷新视图 var t=""; demo.ImageLs.forEach(function(v,i){ t=t+`
    ![](${v.BolbUrl})
    ${v.name}
    `; }); document.getElementById("output_area").innerHTML=t; } var demo = { ImageLs: [], removeThisUpImg: function(index) { demo.ImageLs.splice(index, 1); reloadDiv(); } };

    登录后复制

    相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

    相关阅读:

    注意事项

    注意事项

    注意事项

    注意事项

    以上就是H5怎样做出图片拖拽上传预览组件的详细内容,更多请关注【创想鸟】其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

    发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3125018.html

    (0)
    上一篇 2025年3月29日 19:37:09
    下一篇 2025年3月29日 19:37:28

    AD推荐 黄金广告位招租... 更多推荐

    相关推荐

    • h5制作性能变化折线图

      这次给大家带来h5制作性能变化折线图,h5制作性能变化折线图的注意事项有哪些,下面就是实战案例,一起来看一下。 通过动态设置内部元素高度 =>     nbsp;html>                示例1     #tit…

      编程技术 2025年3月29日
      100
    • 在webstorm中使用H5的快捷键

      这次给大家带来在webstorm中使用h5的快捷键,在webstorm中使用h5快捷键的注意事项有哪些,下面就是实战案例,一起来看一下。 快速移动选种的代码,上下移动 往上移动: Ctrl + shift + ⬆️ (方向键上)往下移动: …

      编程技术 2025年3月29日
      100
    • 如何使用H5的dataset

      这次给大家带来如何使用h5的dataset,使用h5的dataset的注意事项有哪些,下面就是实战案例,一起来看一下。      HTML5标准允许你在普通的元素标签里,嵌入类似data-*的注意事项,来实现一些简单数据的存取。它的数量不受…

      编程技术 2025年3月29日
      100
    • Html5实现APP中监听返回事件如何处理

      本文主要和大家介绍了html5 app中监听返回事件处理的方法示例的相关资料,希望能帮助到大家。在使用mui框架的时候,我们经常会用到一个头部带有.mui-action-back的class。                        …

      编程技术 2025年3月29日
      100
    • 微信html5页面如何调用第三方位置导航

      本文主要和大家介绍了微信html5页面调用第三方位置导航的示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。 需要准备的: 通过微信认证的公众号 有备案过的域名 背景:微信公众号点击菜单栏跳到h5页面,需…

      编程技术 2025年3月29日
      100
    • H5中APP监听返回事件处理

      这次给大家带来H5中APP监听返回事件处理,H5中APP监听返回事件处理的事件处理有哪些,下面就是实战案例,一起来看一下。 在使用MUI框架的时候,我们经常会用到一个头部带有.mui-action-back的class 货物查询 登录后复制…

      编程技术 2025年3月29日
      100
    • h5实现多图片预览上传及点击可拖拽控件

      这次给大家带来h5实现多图片预览上传及点击可拖拽控件,h5实现多图片预览上传及点击可拖拽控件的上传有哪些,下面就是实战案例,一起来看一下。 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到上传框…

      2025年3月29日
      100
    • 微信的H5页面调用第三方位置导航

      这次给大家带来微信的H5页面调用第三方位置导航,微信H5页面调用第三方位置导航的导航有哪些,下面就是实战案例,一起来看一下。 微信h5页面拉起第三方导航应用 需要准备的: 通过微信认证的公众号 有备案过的域名 背景:微信公众号点击菜单栏跳到…

      编程技术 2025年3月29日
      100
    • 配置H5的滚动条样式

      这次给大家带来配置H5的滚动条样式的,配置H5的滚动条样式的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了配置H5的滚动条样式的示例代码,分享给大家,具体如下: /* 滚动条的滑轨背景颜色 */::-webkit-scroll…

      编程技术 2025年3月29日
      100
    • H5的div布局与table布局详解

      这次给大家带来H5的div布局与table布局详解,H5div布局与table布局的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例为大家解析了html5 p布局与table布局,供大家参考,具体内容如下 p布局:html+css…

      2025年3月29日
      100

    发表回复

    登录后才能评论