HTML5 移动端 实现九宫格碰撞

怎甘沉沦 提交于 2019-12-08 02:15:25

九宫格碰撞

getClientRects()方法
返回值是一个 DOMRect 对象,这个对象是由该元素的 getClientRects() 方法返回的一组矩形的集合, 即:是与该元素相关的CSS 边框集合 。DOMRect 对象包含了一组用于描述边框的只读属性——left、top、right和bottom,单位为像素。除了 width 和 height 外的属性都是相对于视口的左上角位置而言的。

相关代码:
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #box{
                position: absolute;
                width: 100px;
                height: 100px;
                background-color: yellowgreen;
                z-index: 2;

            }
            #wrap{
                position: absolute;
                top: 200px;
                left: 400px;
                width: 300px;
                height: 200px;
                background-image: url(img/b.jpg);
                background-repeat: no-repeat;
                background-size: 100% 100%;

            }
        </style>
    </head>

    <body>
        <div id="box"></div>
        <div id="wrap"></div>
    </body>
    <script type="text/javascript">
        var box=document.getElementById('box');
        var wrap=document.getElementById('wrap');

        var eleP={left:0,top:0};
        var mouseS={left:0,top:0};

        box.οnmοusedοwn=function (event) {
            eleP.top=box.offsetTop;
            eleP.left=box.offsetLeft;

            mouseS.top=event.clientY;
            mouseS.left=event.clientX;

            document.οnmοusemοve=function (event) {

                var mouseE={left:0,top:0};
                mouseE.top=event.clientY;
                mouseE.left=event.clientX;

                var disX=mouseE.left-mouseS.left;
                var disY=mouseE.top-mouseS.top;

                var top=disY+eleP.top;
                var left=disX+eleP.left;

                var leftM=document.documentElement.clientWidth-box.offsetWidth;
                var topM=document.documentElement.clientHeight-box.offsetHeight;
                if(top<0){
                    top=0;
                }else if(top>topM){
                    top=topM;
                }
                if(left<0){
                    left=0;
                }else if(left>leftM){
                    left=leftM;
                }
                box.style.left=left+'px';
                box.style.top=top+'px';


                var T1=box.getBoundingClientRect().top;
                var L1=box.getBoundingClientRect().left;
                var R1=box.getBoundingClientRect().right;
                var B1=box.getBoundingClientRect().bottom;

                var T2=wrap.getBoundingClientRect().top;
                var L2=wrap.getBoundingClientRect().left;
                var R2=wrap.getBoundingClientRect().right;
                var B2=wrap.getBoundingClientRect().bottom;

                if( R1<L2 || B1<T2 || R2<L1 || B2<T1){
                    wrap.style.backgroundImage='url(img/b.jpg)';
                }else {
                    wrap.style.backgroundImage='url(img/a.jpg)';
                }

            };
            document.οnmοuseup=function () {
                document.οnmοusemοve=document.οnmοuseup=null;
            }
            return false;
        };
    </script>
    </html>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!