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知识点三 jquery表单对象操作
Jan 17 Javascript
JS简单的轮播的图片滚动实例
Jun 17 Javascript
node.js中的fs.createReadStream方法使用说明
Dec 17 Javascript
jQuery实现contains方法不区分大小写的方法
Feb 13 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
JS新包管理工具yarn和npm的对比与使用入门
Dec 09 Javascript
footer定位页面底部(代码分享)
Mar 07 Javascript
原生js封装运动框架的示例讲解
Oct 01 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
Node与Python 双向通信的实现代码
Jul 16 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
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 session_start()出错原因分析及解决方法
2013/10/28 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python连接mongodb集群方法详解
2020/02/13 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
卫生安全检查制度
2014/02/04 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
Python采集壁纸并实现炫轮播
2022/04/30 Python