牛骨文教育服务平台(让学习变的简单)
博文笔记

HTML5 移动端 实现九宫格碰撞

创建时间:2017-12-07 投稿人: 浏览次数:347

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.onmousedown=function (event) {
            eleP.top=box.offsetTop;
            eleP.left=box.offsetLeft;

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

            document.onmousemove=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.onmouseup=function () {
                document.onmousemove=document.onmouseup=null;
            }
            return false;
        };
    </script>
    </html>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。