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 相关文章推荐
一个很简单的办法实现TD的加亮效果.
Jun 29 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
JavaScript中的this机制
Jan 30 Javascript
浏览器复制插件zeroclipboard使用指南
Mar 26 Javascript
jQuery表单验证插件解析(推荐)
Jul 21 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
react-router实现按需加载
May 09 Javascript
解决Extjs下拉框不显示的问题
Jun 21 Javascript
小程序文字跑马灯效果
Dec 28 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 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
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
JS原生数据双向绑定实现代码
2017/08/14 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python dict乱码如何解决
2020/06/07 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
法律专业实习鉴定
2013/12/22 职场文书
安全生产实施方案
2014/02/23 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
2014年团队工作总结
2014/11/24 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
工会工作个人总结
2015/03/03 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2015年学生管理工作总结
2015/05/26 职场文书