每日分享

一、鼠标的绝对位置和相对位置

注:需要引入JQ

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="jquery-3.0.0.js"></script>
    <script type="text/javascript">

            function click1 (event){
                var data1 = mouseCoords(event);
                var x1 = data1.x;
                var y1 = data1.y;
                alert("绝对坐标:"+x1+","+y1);
                var data2 = getXAndY(event);
                var x2 = data2.x;
                var y2 = data2.y;
                alert("相对坐标:"+x2+","+y2);
            }

            //获取鼠标点击区域中的相对位置坐标
            function getXAndY(event){
                //鼠标点击的绝对位置
                Ev= event || window.event;
                var mousePos = mouseCoords(event);
                var x = mousePos.x;
                var y = mousePos.y;
                //alert("鼠标点击的绝对位置坐标:"+x+","+y);

                //获取div在body中的绝对位置
                var x1 = $("#test").offset().left;
                var y1 = $("#test").offset().top;
                //alert("div在body中的绝对位置坐标:"+x1+","+y1);

                //鼠标点击位置相对于div的坐标
                var x2 = x - x1;
                var y2 = y - y1;
                return {x:x2,y:y2};
            }

            //获取鼠标点击区域在Html绝对位置坐标
            function mouseCoords(event){
                if(event.pageX || event.pageY){
                    return {x:event.pageX, y:event.pageY};
                }
                return{
                    x:event.clientX + document.body.scrollLeft - document.body.clientLeft,
                    y:event.clientY + document.body.scrollTop - document.body.clientTop
                };
            }   
    </script>
</head>
<body>
    <div id="test" style="width:200px; height:200px; border:1px solid #d3d3d3;" onclick="click1(event)"></div>
</body>
</html>

二、鼠标的横、纵坐标

var x , y;
 
//当需求为获得的坐标值相对于body时,用:
function positionBody(event){
    event = event||window.event;
    //获得相对于body定位的横标值;
    x=event.clientX
    //获得相对于body定位的纵标值;
    y=event.clientY
}

//当需求为获得的坐标值相对于某一对象时,用:
function positionObj(event,id){
    //获得对象相对于页面的横坐标值;id为对象的id
    var thisX = document.getElementById(id).offsetLeft;
    //获得对象相对于页面的横坐标值;
    var thisY = document.getElementById(id).offsetTop;
    //获得页面滚动的距离;
    //注:document.documentElement.scrollTop为支持非谷歌内核;document.body.scrollTop为谷歌内核
    var thisScrollTop = document.documentElement.scrollTop + document.body.scrollTop;
    event = event||window.event;
    //获得相对于对象定位的横标值 = 鼠标当前相对页面的横坐标值 - 对象横坐标值;
    x = event.clientX - thisX;
    //获得相对于对象定位的纵标值 = 鼠标当前相对页面的纵坐标值 - 对象纵坐标值 + 滚动条滚动的高度;
    y = event.clientY - thisY + thisScrollTop;
}

三、什么是事件

  • 什么叫做事件?

       事件,俗话说就是对一定事物产生一定的影响。

       例如:我们打开一个网页,网页被打开的那一刻,首先触发的事件就是load事件,只有触发了这个事件,才会执行这部分代码。

  • 事件的种类

1、一般事件

2、页面相关事件

3、表单相关事件

4、滚动字幕事件

5、编辑事件

6、数据绑定事件

7、外部事件

  

四、onmouseover 、onmouseout 与onmouseenter 、onmouseleave的区别

onmouseover、nmouseout:鼠标移动到自身时候会触发事件,同时移动到其子元素身上也会触发事件

onmouseenter、onmouseleave:鼠标移动到自身是会触发事件,但是移动到其子元素身上不会触发事件

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="Generator" content="EditPlus®">
        <meta name="Author" content="">
        <meta name="Keywords" content="">
        <meta name="Description" content="">
        <title></title>
        <style type='text/css'>
            *{ margin:0; padding:0;}
            #box3{
                height:100px;
                background:red;
            }
            #box2{
                padding:50px;
                background:blue;
            }
            #box1{
                padding:50px;
                background:green;
            }
        </style>
    </head>

    <body>
        <div id="box1">1
            <div id="box2">2
                <div id="box3">3</div>
            </div>
        </div>

        <script type="text/javascript">
            /*
                onmouseover
                onmouseout

                onmouseenter
                onmouseleave
            */

            var oBox1 = document.getElementById('box1');
            ///*
            /*
            oBox1.onmouseover = function(){  //可以直接通过ID这样调用,但不提倡
                console.log( 'over' );
            };
            */
            oBox1.onmouseout = function(){  //可以直接通过ID这样调用,但不提倡
                console.log( 'out' );
            };
            //*/

            /*
            oBox1.onmouseenter = function(){  //可以直接通过ID这样调用,但不提倡
                console.log( 'enter' );
            };
            oBox1.onmouseleave = function(){
                console.log( 'leave' );
            };
            */
        </script>
    </body>
</html>

五、判断鼠标的移动方向

<script>
var lastX = null,
    lastY = null;
window.onmousemove = function(event){
    var curX = event.clientX,
        curY = event.clientY,
        direction = '';
    // console.info(event);
    // console.info(event.clientX);
    // console.info(event.clientY);
    // 初始化坐标
    if(lastX == null || lastY == null){
        lastX = curX;
        lastY = curY;
        return ;
    }
    if(curX > lastX){
        direction += 'X右,';
    }else if(curX < lastX){
        direction += 'X左,';
    }else{
        direction += 'X居中,';
    }
    if(curY > lastY){
        direction += 'Y上';
    }else if(curY < lastY){
        direction += 'Y下';
    }else{
        direction += 'Y居中';
    }
    lastX = curX;
    lastY = curY;
    console.info(direction);
    document.body.innerText = direction;
}
</script>

 

posted on 2017-06-29 23:25  Iamgod`  阅读(118)  评论(0编辑  收藏  举报