js/jq仿window文件夹框选操作插件

Posted 小结巴巴吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js/jq仿window文件夹框选操作插件相关的知识,希望对你有一定的参考价值。

0.先给大家看看效果:

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查看效果吧!!!!

 

 个人博客 :很多好用的 npm 包 , 可以看看  https://gilea.cn/ 

以上是关于js/jq仿window文件夹框选操作插件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 插件 Magnify 开发简介(仿 Windows 照片查看器)

jQuery 插件 Magnify 开发简介(仿 Windows 照片查看器)

Jquery。

JS/JQ常见兼容辅助插件

仿移动端触摸滑动插件swiper,的简单实现

jQuery框架使用,jq选择器,jq操作页面内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息,js/jq页面加载完毕事件,jq事件