2016年5月27日下午(妙味课堂js基础-3笔记二(事件))

一、鼠标事件

  1、鼠标位置 

    可视区位置:clientX、clientY(鼠标的坐标)

  这里我们注意,现在我们只知道它是鼠标的坐标,但是我们不知道它是鼠标的什么坐标,现在我们来看一个实例:

      ——例子1:跟随鼠标的Div

    (1)onmousemove 事件会在鼠标指针移动时发生。

  注释:每当用户把鼠标移动一个像素,就会发生一个 mousemove 事件。这会耗费系统资源去处理所有这些 mousemove 事件。因此请审慎地使用该事件.

<head>
    <style type="text/css">
        #div1 {width:100px; height:100px; background:red; position:absolute;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
    document.onmousemove=function (ev)
    {
        var oEvent=ev||event;
        var oDiv=document.getElementById(‘div1‘);
        oDiv.style.left=oEvent.clientX+‘px‘;
        oDiv.style.top=oEvent.clientY+‘px‘;
    };
    </script>
</head>
<body>
    <div id="div1"></div>
</body>

  这里又出现了其他的问题,代码如下所示;

<head>
    <style type="text/css">
        #div1 {width:100px; height:100px; background:red; position:absolute;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
    document.onmousemove=function (ev)
    {
        var oEvent=ev||event;
        var oDiv=document.getElementById(‘div1‘);
        oDiv.style.left=oEvent.clientX+‘px‘;
        oDiv.style.top=oEvent.clientY+‘px‘;
    };
    </script>
</head>
<body style="height:2000px;">
    <div id="div1"></div>
</body>

  当我们给body加一个高度之后我们就会发现这个div跟鼠标脱离了,那这是为什么呢,接下来我们来看一下问题出现在哪里?

实际上这个clientX说的是可视区坐标,那什么是可视区呢?什么又是可视区坐标呢?

                                  

  这里又出现了一个滚动距离(滚动条):scrollTop属性;

      -消除滚动条的影响

          -滚动条的意义——可视区与页面顶部的距离

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script>
        document.onclick=function ()
        {
            //非Chrome
            //alert(document.documentElement.scrollTop);            //在Chrome下无论怎么滚动都是0;
            //chrome
            //alert(document.body.scrollTop);                            //都可以
            var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
            alert(scrollTop);
        };
    </script>
</head>
<body style="height:2000px;">
</body>

  这样的代码就不仅处理了兼容性的问题还处理了滚动条的问题了;

  接下来我们把它用到上面的代码中去就可以解决上面存在的问题;

    <style type="text/css">
    #div1 {width:100px; height:100px; background:red; position:absolute;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
        document.onmousemove=function (ev)
        {
            var oEvent=ev||event;
            var oDiv=document.getElementById(‘div1‘);
            var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
            var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;

            oDiv.style.left=oEvent.clientX+scrollLeft+‘px‘;
            oDiv.style.top=oEvent.clientY+scrollTop+‘px‘;
        };
    </script>
</head>
<body style="height:2000px;">
    <div id="div1"></div>
</body>

    这样的话div就会一直跟着鼠标走了,但是这里又有问题了,就是div会闪(因为它要不断的重新定位),那么这个问题要怎么处理呢?在后面学习运动的那一块会来好好解决这个问题,我们也可以运用固定定位,但是固定定位在IE6下不兼容。在BOM那一课有相关问题来处理。

注意:小小的经验:主要你用到了clientX,你就一定要加scrollLeft;只要用到了clientY,你就一定要加scrollTop。(不加的话会有潜在的问题。)

  2、获取鼠标在页面的绝对位置

    封装函数

      例子2:一串跟随鼠标的Div

<head>
    <style type="text/css">
        div {width:10px; height:10px; background:red; position:absolute;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
        window.onload=function ()
        {
            var aDiv=document.getElementsByTagName(‘div‘);
            var i=0;

            document.onmousemove=function (ev)
            {
                var oEvent=ev||event;                   //取鼠标的坐标
                for(i=aDiv.length-1;i>0;i--)
                {
                    aDiv[i].style.left=aDiv[i-1].style.left;      //后一个div跟着前面一个div走,
                    aDiv[i].style.top=aDiv[i-1].style.top;
                }
                aDiv[0].style.left=oEvent.clientX+‘px‘;          //第一个div跟着鼠标走;
                aDiv[0].style.top=oEvent.clientY+‘px‘;
            };
        };
    </script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>

二、键盘事件

  onclick=onmousedown+onmouseup;(鼠标点击)

  onpress=onkeydown+onkeyup;(键盘按下)

  1、keyCode(键码)

<script>
        document.onkeydown=function (ev) {
            var oEvent=ev||event;
            alert(oEvent.keyCode);
        };
    </script>

     获取用户按下键盘的哪个按键

        ——例子:键盘控制Div移动

  这里我们来学一个属性为做准备:offset

  (1)offsetWidth:就是div的宽度+border+padding;

  (2)offsetHeight:就是div的高度+border+padding;  //两个都不包括margin的值;

<head>
    <style type="text/css">
        #div1 {width:100px; height:100px; background:red;border:1px solid black; padding:10px; margin:20px; position:absolute;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
        window.onload=function ()
        {
            var oDiv=document.getElementById(‘div1‘);
            alert(oDiv.offsetHeight);        //弹出122,(100+1+1+10+10)       //alert(oDiv.offsetWidth);       //弹出122,(100+1+1+10+10)
        };
    </script>
</head>
<body>
    <div id="div1"></div>
</body>

  (3)offsetLeft:

  (4)offsetTop:

<head>
    <style type="text/css">
        #div1 {width:100px; height:100px; background:red; border:1px solid black; padding:10px; margin:20px; position:absolute; left:100px; top:100px;}
    </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script type="text/javascript">
        window.onload=function ()
        {
            var oDiv=document.getElementById(‘div1‘);
            alert(oDiv.offsetHeight);
        };
    </script>
</head>
<body>
    <div id="div1"></div>
</body>

  2、其他属性

      ctrlKey、shiftKey、altKey

        ——例子:提交留言

          -回车 提交

          -ctrl+回车 提交

时间: 2024-11-09 22:08:20

2016年5月27日下午(妙味课堂js基础-3笔记二(事件))的相关文章

2016年5月27日下午(妙味课堂js基础-3笔记三(事件))

一.默认行为 1. 什么是事件的默认行为(默认事件) (1)浏览器不需要我们去编写,浏览器自身就已经具备的功能:(点击右键弹出页面菜单) (2)如何阻止默认行为 2. 上下文菜单:oncontextmenu(右键菜单) <script type="text/javascript"> document.oncontextmenu=function () { alert("a") }; </script> 点击右键就会弹出a,且会出现右键菜单:

2016年5月27日上午(妙味课堂js基础-3笔记一(事件))

一.event事件 1.什么是event事件对象? 用来获取事件的详细信息:鼠标位置.键盘按键 ——例子:获取鼠标位置:clientX ——document的本质:document.childNodes[0].tagName (1)首先对于点击事件,如果我们想要在页面打开后,在页面的任何一个地方点击都会弹出来一个框,那我们应该怎么做呢? <script type="text/javascript"> window.onload=function () { document.

妙味课堂——JavaScript基础课程笔记

集中时间把秒微课堂JS的基础课程看完,并且认真完成了课后练习.感觉在JS方面的技能算是入了个门了.课后练习的作业完成的代码我都汇总在了这里.至于视频课的学习笔记,则记录如下. 第01课JS入门基础_热身课程 写JS的步骤 先实现布局 想出实现原理 了解JS语法 希望把某个元素移除的实现 display: none; 显示为无 visibility: hidden; 隐藏 width \ height 透明度 left \ top 拿与背景色相同的div盖住该元素 利用margin值 …… 获取元

全国身份证前6位地区编码归属地(2016年06月27日)共6724条

简介: 前段时间在忙单位的一个小系统,用来管理从业人员的电子档案,最核心.复杂的功能已经完成,现在基本告一段落.用户可上传已扫描或拍照的档案图片,然后选择一个(已导入数据库)的从业人员信息,将扫描件与数据库信息对应,便于日后查询,也减轻了档案室的日常工作量.现在单位已经有一个成熟的系统用来管理从业人员信息,但只有一个档案编号,无法查询纸质档案信息,经常查档案就找档案室,太繁琐.带来各种麻烦.而从业人员涉及到的信息字段比较多,好在原系统可以导出数据库信息,我直接导入新系统就可以用了.省的操作员在录

4月27日下午学习日志

4月27日下午看了通信工程的书和视频,了解了内核功能 内线功能:进程管理,内存管理,文件系统,网络功能,硬件驱动,安全机制 其中进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等: 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术: 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:

【EPM-易通元】2016年05月04日下午好消息公布

涨了.涨了.又涨了! 我们的「EPM易通元」天天见涨!太给力了!! 2016.05月04日今天下午已涨0.02美金,目前坼分已到0.22美金啦!如果你有1000个易通元,你今天就收益20美金 如果你有10000个易通元,今天就收益200美金 如果你有100000个易通元,你今天就收益2000美金 如果你有1000000个易通元,你今天就收益20000美金. 恭喜买到「EPM易通元」的朋友们,买到即是赚到! 买入210美金到3500美金 :1美金:6.3人民币兑换,举例买入3500美金(人民币22

2016年5月25日下午(妙味课堂js预热课程-4笔记二)

二.无缝滚动    如上图所示,现在很多网页都会实现这样的效果:它是如何实现的呢? 1.布局 注意如果想让一个div的位置发生改变,则最好给这个div加上一个绝对定位:position:absolute: obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位像素. (1)这里插入一个小程序,即如何让Div移动起来:代码如下: 1 <style> 2 #div1{width:100px;height:100px;backg

2016年5月25日下午(妙味课堂js预热课程-4笔记)

一.延时显示框 首先我们要做的是制作两个显示框,当鼠标移入显示框1的时候显示框2出来,当鼠标移出的时候显示框2消失:其代码如下: <script type="text/javascript"> window.onload=function () { var oDiv1=document.getElementById("div1"); var oDiv2=document.getElementById("div2"); oDiv1.on

2017 3月27日下午

下午看了两段高数视频,关于定积分和不定积分的