js/jq仿window文件夹框选操作插件


Posted in Javascript onMarch 08, 2017

0.先给大家看看效果:

js/jq仿window文件夹框选操作插件

1.创建一个index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    ul{list-style: none}
    li{width:200px;margin:10px;float:left;height: 100px;background: #ccc;border: 1px solid #fff;}
    .selected{border: 1px solid red}
  </style>
  <script src="./jquery-1.12.4.min.js"></script>
</head>
<body>
   <ul class='clearfix test' >
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <li><img src="" alt=""></li>
     <div style="clear: both"></div>
</ul>
</body>
</html>

2.引入插件areaSelect.js 

(function($){
    $.fn.areaSelect=function(option){
      var opt={}
      opt=$.extend(opt,option);
      var _this=$(this);
      _this.on('mousedown',function (e) {
        console.log(_this)
        _this.find('li').removeClass('selected');
        var startTop=e.pageY;
        var startLeft=e.pageX;
        var endTop,endLeft;
        var selectBox=$('<div id="select-box"></div>');
        $('body').append(selectBox);
        selectBox.css({'position':'absolute', 'top':startTop+'px', 'left':startLeft+'px', 'background':'rgba(255,106,23,0.3)', 'transition':'all 0s', 'width':0, 'height':0, 'z-index':10})
        $(document).on('mousemove',function (e) {
          e.preventDefault();
          endTop=e.pageY;
          endLeft=e.pageX;
          if(e.pageY-startTop>0 && e.pageX-startLeft>0){
            var height=e.pageY-startTop;
            var width=e.pageX-startLeft;
            selectBox.css({
              'width':width+'px',
              'height':height+'px'
            })
          }else if(e.pageY-startTop<0 && e.pageX-startLeft<0) {
            var height=-(e.pageY-startTop);
            var width=-(e.pageX-startLeft);
            selectBox.css({
              'width':width+'px',
              'height':height+'px',
              'top':e.pageY+'px',
              'left':e.pageX+'px'
            })
          }else if(e.pageY-startTop>0 && e.pageX-startLeft<0) {
            var height=(e.pageY-startTop);
            var width=-(e.pageX-startLeft);
            selectBox.css({
              'width':width+'px',
              'height':height+'px',
              'top':startTop+'px',
              'left':e.pageX+'px'
            })
          }else if(e.pageY-startTop<0 && e.pageX-startLeft>0) {
            var height=-(e.pageY-startTop);
            var width=(e.pageX-startLeft);
            selectBox.css({
              'width':width+'px',
              'height':height+'px',
              'top':e.pageY+'px',
              'left':startLeft+'px'
            })
          }
          _this.find('>li').each(function () {
            if((startLeft<$(this).offset().left+$(this).width() && $(this).offset().left<endLeft && $(this).offset().top<endTop && $(this).offset().top+$(this).height()>startTop && (e.pageY-startTop>0 && e.pageX-startLeft>0)) ||
              (endLeft<$(this).offset().left+$(this).width() && $(this).offset().left<startLeft && $(this).offset().top<startTop && $(this).offset().top+$(this).height()>endTop && (e.pageY-startTop<0 && e.pageX-startLeft<0)) ||
              (endLeft<$(this).offset().left+$(this).width() && $(this).offset().left<startLeft && $(this).offset().top<endTop && $(this).offset().top+$(this).height()>startTop && (e.pageY-startTop>0 && e.pageX-startLeft<0)) ||
              (startLeft<$(this).offset().left+$(this).width() && $(this).offset().left<endLeft && $(this).offset().top<startTop && $(this).offset().top+$(this).height()>endTop && (e.pageY-startTop<0 && e.pageX-startLeft>0)) ){
              $(this).addClass('selected');
              return;
            }else {
              $(this).removeClass('selected');
            }
          })
        })
        $(document).on('mouseup',function () {
//             if(opt.do) opt.do(); 执行毁掉函数或者,钩子函数
          $('#select-box').remove();
          $(document).unbind('mousemove');
        })
      })
    }
  })(jQuery)

3.调用插件

在index.html的body最下面添加下面代码:

<script>
  $(function () {
    $('.test').areaSelect()
  })
</script>

打开index.html查看效果吧!!!!

以上所述是小编给大家介绍的js/jq仿window文件夹框选操作插件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
IE事件对象(The Internet Explorer Event Object)
Jun 27 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
Javascript数组与字典用法分析
Dec 13 Javascript
jQuery实现表单步骤流程导航代码分享
Aug 28 Javascript
详解js数组的完全随机排列算法
Dec 16 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
JS div匀速移动动画与变速移动动画代码实例
Mar 26 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 Javascript
js实现上下左右弹框划出效果
Mar 08 #Javascript
浅谈JavaScript正则表达式-非捕获性分组
Mar 08 #Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 #Javascript
原生js实现瀑布流布局
Mar 08 #Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 #Javascript
JavaScript中的工厂函数(推荐)
Mar 08 #Javascript
老生常谈js中0到底是 true 还是 false
Mar 08 #Javascript
You might like
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python中协程用法代码详解
2018/02/10 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
医学生实习自荐信
2013/10/01 职场文书
营业员实习自我鉴定
2013/12/07 职场文书
元旦晚会邀请函
2014/01/27 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
table不让td文字溢出操作方法
2022/12/24 HTML / CSS