zoukankan      html  css  js  c++  java
  • 鼠标事件--物体跟着鼠标动

    在讲述鼠标事件之前先讲一个对象--event:

    event对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
    事件通常与函数结合使用,函数不会在事件发生前被执行.

    例子:event事件:点击任何位置显示当前位置的横纵坐标。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    </head>
    <body>
    <input type="button" value="aaa"></input>
    <script type="text/javascript">
    window.onload=function(){
    document.onclick=function(ev){
    var oEvent=ev||event;
    alert(oEvent.clientX+','+oEvent.clientY);
    }
    }
    </script>
    </body>
    </html>

    注意:event的兼容性处理  var oEvent=ev||event;

    用全局对象的表示与用body对象表示的区别:body需要有东西撑起来,若没有东西,则无论点击那里都不会弹出位置。而document  一个全局对象 无论点击页面的哪个位置,都会显示提示当前的坐标。

     例2:跟着鼠标跑的小方块

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>鼠标事件</title>
    <style type="text/css">
    #div1{
    200px;
    height: 200px;
    background-color: red;
    position: absolute;
    }
    </style>
    </head>
    <body style="height: 2000px;">
    <div id="div1"></div>
    <script type="text/javascript">
    function getpos(ev)
    {
    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
    var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
    return {x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop};
    }

    document.onmousemove=function(ev){
    var oDiv=document.getElementById('div1');
    var oEvent=ev||event;
    var pos=getpos(oEvent);
    oDiv.style.left=pos.x+'px';
    oDiv.style.top=pos.y+'px';
    }
    </script>
    </body>
    </html>

    注意:鼠标 clientX,clientY为可视区坐标,而div的定位根据body定位,因此鼠标位置和div位置当可视区不一样时,会出现偏差。为防止宽高过大使小方块与鼠标出现距离   一般配合使用scrollTop、scrollLeft 

     scrollTop=document.documentElement.scrollTop||document.body.scrollTop;

    scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;


    例:一串跟着鼠标跑的小方块

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>一串跟着跑的小方块</title>
    <style type="text/css">
    div{
    20px;
    height: 20px;
    background-color: red;
    position: absolute;
    }
    </style>
    </head>
    <body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <script type="text/javascript">
    function getpos(ev)
    {
    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
    var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
    return {x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop};
    }
    document.onmousemove=function(ev){
    var div=document.getElementsByTagName('div');
    var oEvent=ev||event;
    var pos=getpos(oEvent);
    for (var i = div.length-1; i > 0; i--) {
    div[i].style.left=div[i-1].offsetLeft+'px';
    div[i].style.top=div[i-1].offsetTop+'px';
    }

    div[0].style.left=pos.x+'px';
    div[0].style.top=pos.y+'px';
    }
    </script>
    </body>
    </html>

    注意:原理与上一个例子相同,不同之处在于第一个小方块跟着鼠标跑,通过循环控制后面的每一个小方块跟着前面的小方块跑。

  • 相关阅读:
    博客作业03--栈和队列
    博客作业02---线性表
    博客作业01-抽象数据类型
    C语言最后一次作业--总结报告
    C语言博客作业--函数嵌套调用
    java课程设计——2048
    博客作业06--图
    博客作业05--查找
    博客作业04--树
    博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/huixinyudeboke/p/5680532.html
Copyright © 2011-2022 走看看