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


    0.先给大家看看效果:

    1.创建一个index.html文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            ul{list-style: none}
            li{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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
        (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最下面添加下面代码:

    1
    2
    3
    4
    5
    6
    <script>
     
        $(function () {
            $('.test').areaSelect()
        })
    </script>

      

    打开index.html查看效果吧!!!!

  • 相关阅读:
    [luogu p4447] [AHOI2018初中组]分组
    咕咕咕通知
    [luogu p3817] 小A的糖果
    [luogu p1228] 地毯填补问题
    [luogu p1259] 黑白棋子的移动
    [luogu p3612] [USACO17JAN]Secret Cow Code S
    [luogu p1990] 覆盖墙壁
    [luogu p1928] 外星密码
    [luogu p2036] Perket
    [luogu p2392] kkksc03考前临时抱佛脚
  • 原文地址:https://www.cnblogs.com/libin-1/p/6533798.html
Copyright © 2020-2023  润新知