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 相关文章推荐
jQuery弹出(alert)select选择的值
Apr 21 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
Oct 11 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
mui js控制开关状态、修改switch开关的值方法
Sep 03 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 作用域解析运算符(::)
2010/07/27 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
js实现随机点名功能
2020/12/23 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
社区消防工作实施方案
2014/03/21 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
JavaScript流程控制(循环)
2021/12/06 Javascript
Python语言中的数据类型-序列
2022/02/24 Python
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android