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 相关文章推荐
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 07 Javascript
Ajax获取node服务器数据的完整步骤
Sep 20 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中使用Oracle数据库(2)
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/11/17 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
Python简单实现控制电脑的方法
2018/01/22 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python sys模块常用方法解析
2020/02/20 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
体育专业个人的求职信范文
2013/09/21 职场文书
英语系本科生个人求职信
2013/09/21 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
农业生产宣传标语
2014/10/08 职场文书
2014年内勤工作总结
2014/11/24 职场文书
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android