6.30随笔

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

 

注:需要引入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 @ 2017-06-30 00:31  云随风走  阅读(122)  评论(0编辑  收藏  举报