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 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
cookie中的path与domain属性详解
Dec 18 Javascript
jQuery中document与window以及load与ready 区别详解
Dec 29 Javascript
深入探讨javascript中的数据类型
Mar 04 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
Aug 22 Javascript
three.js实现圆柱体
Dec 30 Javascript
vue select 获取value和lable操作
Aug 28 Javascript
vue-amap根据地址回显地图并mark的操作
Nov 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个人网站架设连环讲(四)
2006/10/09 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP生成唯一订单号
2015/07/05 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
JS高级笔记
2011/07/13 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python字符串格式化输出代码实例
2019/11/22 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
项目经理任命书内容
2014/06/06 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
师德师风整改措施
2014/10/24 职场文书
2014年政工师工作总结
2014/12/18 职场文书
环境建议书
2015/02/04 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
职工食堂管理制度
2015/08/06 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Mysql数据库命令大全
2021/05/26 MySQL
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android