js/jq仿window文件夹移动/剪切/复制等操作代码


Posted in Javascript onMarch 08, 2017

window对文件夹的操作主要包括移动/剪切/复制,本篇文章主要用jQuery来实现,下面一起来了解一下把。

1.先看下效果吧!

js/jq仿window文件夹移动/剪切/复制等操作代码

2.在添加一个index.html

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Title</title>

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

</head>

<style>

  ul{list-style: none;min-height: 100px;min-width: 100px;background: #eee;}

  li{width:200px;margin:10px;float:left;height: 200px;background: #ccc;border: 1px solid #fff;overflow: hidden}

  .selected{border: 1px solid red}

</style>

<body>

  <ul class="test-box">

    <div style="clear: both"></div>

  </ul>

  <ul class='clearfix test' >

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <li><img src="./defaultlogo.jpg" alt=""></li>

    <div style="clear: both"></div>

  </ul>

 

</body>

</html>

3.添加插件

上一篇文章里面有 areaSelect.js 框选插件,用于我们框选我们要移动的内容,没有看的同志可以去上一篇复制过来。

添加 OptionFile 操作对象

var OptionFile=(function (opt) {

      var o={

        width:100,  //

        height:100,

        gapWidth:2

      };

      var o = $.extend(o,opt),

        _body=$('body'),

        boxBg='<div style="position: absolute;height: 100%;width: 100%;background: rgba(225,225,225,1);left: 0;top: 0;z-index: 1"></div>',

        movingBox='<div class="moving-box" style="width: '+o.width+'px;height: '+o.height+'px;box-sizing:border-box;position: absolute;z-index: 8888;"></div>';

      return {

        actionLock:false, //移动锁定

        releaseTarget:false, //释放锁定

        keyCode:null,  //当前按键 键值

        //鼠标按下操作

        optionDown:function ( selectFile , type , evt ) {

          this.releaseTarget=false;

          this.getImgList(selectFile);

          var currentX=evt.pageX;

          var currentY=evt.pageY;

          $('.moving-box').css({

            top:currentY+10,

            left:currentX+10

          })

        },

        //鼠标移动操作

        optionMoving:function (selectFile , type , evt ) {

          if(this.actionLock){

            this.optionDown(selectFile , type , evt );

          }

        },

        getImgList:function (selectFile) {

          var length = selectFile .length,

            imgWidth = o.width-10-(length)*o.gapWidth,

            imgHeight = o.height-10-(length)*o.gapWidth;

          if(!this.actionLock){

            _body.append(movingBox);

            $('.moving-box').append(boxBg);

            $.each(selectFile,function (k, v) {

              var img = '<img style="width:'+imgWidth+'px;height:'+imgHeight+'px;z-index:'+(k+2)+';position:absolute;right:'+(k+1)*o.gapWidth+'px;top:'+(k+1)*o.gapWidth+'px" src="'+v.src+'"/>';

              $('.moving-box').append(img);

            });

          }

          this.actionLock=true;

        },

        //放开鼠标操作(回调函数,返回按键键值和当前目标)

        closeOption:function (func) {

          var _this= this;

          $(document).keydown(function (event) {

            _this.keyCode=event.keyCode;

            $(document).on('mouseup',function (e) {

              if(!_this.releaseTarget){

                $('.moving-box').remove();

                _this.actionLock=false;

                $(document).unbind('mousemove');

                _this.releaseTarget=true;

                func(e,_this.keyCode);         //返回当前 释放的 目标元素 , 和按键code

                $(document).unbind('keydown');

                _this.keyCode=null;

              }

            })

          });

          $(document).trigger("keydown");

          $(document).keyup(function (event){

            $(document).unbind('keyup');

            $(document).unbind('keydown');

            _this.keyCode=null;

          })

        }

      }

    })

4.绑定函数和操作

$(function () {

  $(function () {

    $('.test').areaSelect()  //框选操作

  })

   var optionImg= new OptionFile();

   $('.test li').on("mousedown",function(e){

     if($(this).hasClass('selected')) {

       e.preventDefault();

       e.stopPropagation();

     }

     var firstImg = $(this).find('img'),

       currentList=$('.test li.selected img'); //框选的图片list,用于移动的时候显示

     currentList.push({src:firstImg.attr('src')}); //移动时候的第一张图片

     var loop = setTimeout(function () {

       optionImg.optionDown(currentList,1,e );

       $(document).mousemove(function (e) {

         optionImg.optionMoving(currentList,1,e);

         optionImg.closeOption(function (e,keycode) {

           var target=$(e.target);  //目标位置 可以判断目标不同位置执行不同操作

           console.log(keycode);   //拖拽放开时候是否有按键 keycode 按键的值  可以通过不同的 keycode 来执行不同操作

           target.prepend($('.test li.selected'))

         });

       });

     },200);

     $(document).mouseup(function () {

       clearTimeout(loop);

     });

   });

})

OK!  现在可以看效果了,插件可以自己扩张和修改。

上面 可以 keycode 不同按键值  完成不同的操作,如 移动、剪切、复制、粘贴等。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery动态加载js三种方法实例
Aug 03 Javascript
jquery批量控制form禁用的代码
Aug 06 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
解析JavaScript的ES6版本中的解构赋值
Jul 28 Javascript
vue-router路由与页面间导航实例解析
Nov 07 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
puppeteer实现html截图的示例代码
Jan 10 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
jquery仿ps颜色拾取功能
Mar 08 #Javascript
关于Javascript中document.cookie的使用
Mar 08 #Javascript
JavaScript中transform实现数字翻页效果
Mar 08 #Javascript
vue动态组件实现选项卡切换效果
Mar 08 #Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 #Javascript
Vue.js组件tab实现选项卡切换
Mar 23 #Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 #Javascript
You might like
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
使用pip安装python库的多种方式
2019/07/31 Python
使用python实现滑动验证码功能
2019/08/05 Python
python中的global关键字的使用方法
2019/08/20 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
帕克纽约:PARKER NY
2018/12/09 全球购物
公司市场专员岗位职责
2014/06/29 职场文书
2014年教务处工作总结
2014/12/03 职场文书
岳庙导游词
2015/02/04 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL