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 相关文章推荐
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
Vue封装Swiper实现图片轮播效果
Feb 06 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
JavaScript undefined及null区别实例解析
Jul 21 Javascript
解决vue路由name同名,路由重复的问题
Aug 05 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
JavaScript实现前端倒计时效果
Feb 09 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-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
Python制作词云的方法
2018/01/03 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python中的整除和取模实例
2020/06/03 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
一套Delphi的笔试题二
2013/05/11 面试题
违反学校规定检讨书
2014/01/18 职场文书
文化活动实施方案
2014/03/28 职场文书
房屋转让协议书范本
2014/04/11 职场文书
横幅标语大全
2014/06/17 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript