zoukankan      html  css  js  c++  java
  • JavaScript DOM事件对象的两个小练习 | 学习内容分享

    Event 对象

    Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

    事件通常与函数结合使用,函数不会在事件发生前被执行!

    本文用于记录个人学习过程中的两个小练习,其中包括事件对象的一些用法和问题的解决以及兼容性问题

    1. 获取鼠标指针坐标
    2. div跟随鼠标移动

    练习

    1 获取鼠标指针坐标

    两个div,当鼠标在上面的div#areaDiv移动时,在下面的div#showMsg中显示鼠标指针坐标

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<style type="text/css">
    			#areaDiv{
    				 500px;
    				height: 200px;
    				border: 1px solid black;
    			}
    			#showMsg{
    				 500px;
    				height: 50px;
    				margin-top: 20px;
    				border: 1px solid black;
    			}
    		</style>
    	
    		<script type="text/javascript">
    			
    			window.onload = function(){
    				/*
    				 * 当鼠标在areaDiv中移动时,在showMsg中显示鼠标的坐标
    				 */
    				//获取div
    				var areaDiv = document.getElementById("areaDiv");
    				var showMsg = document.getElementById("showMsg");
    				
    				/*
    				 * 事件对象
    				 * 	- 当事件的响应函数被触发时,浏览器会将一个事件对象作为实参传递进响应函数,
    				 * 		在事件对象中封装了当前事件相关的一切信息,比如:鼠标指针的坐标,键盘哪个按键被按下
    				 */
    				areaDiv.onmousemove = function(event){
    					
    					/*
    					 * 在IE8中,响应函数被触发时,浏览器不会传递事件对象
    					 * 	而是将事件对象作为window对象的属性保存的	window.event
    					 * 但此方法不兼容火狐
    					 */
                        
    					/*解决兼容问题,使用if判断
    					if(!event){
    						event = window.event;
    					}*/
    					//此方法更简单方便
    					event = event || window.event;	
    					
    					/*		获取坐标值
    					 * 	clientX	可以获取鼠标指针的水平坐标
    					 * 	clientY	可以获取鼠标指针的垂直坐标
    					 */
    					var x = event.clientX;
    					var y = event.clientY;
    					//显示坐标值
    					showMsg.innerHTML = 'x='+x+' , y='+y;
    				};
    			};
    			
    		</script>
    	</head>
    	<body>
    		<div id="areaDiv"></div>
    		<div id="showMsg"></div>
    	</body>
    </html>
    

    2 div跟随鼠标移动

    当鼠标在页面中移动时,使div跟随其移动

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>div跟随鼠标移动</title>
    		<style type="text/css">
    			body{ 2000px; height: 1000px;}   /*使页面出现滚动条*/
    			#box1{
    				 100px;
    				height: 100px;
    				background-color: red;
    				position: absolute;
    			}
    		</style>
    		<script type="text/javascript">
    			window.onload = function(){
    				
    				var box1 = document.getElementById("box1");
    				
    				//使div可以跟随鼠标移动,响应函数加给document
    				document.onmousemove = function(event){
    					event = event || window.event;
    					
    					//获取滚动条滚动距离
    					var st = document.documentElement.scrollTop;
    					var sl = document.documentElement.scrollLeft;
    				
    					//获取鼠标指针坐标
    					/*	clientX、clientY
    					 * 用于获取当前可见窗口的鼠标坐标
    					 * 而div的偏移量是相对整个页面的
    					 * 
    					 * pageX、pageY可以获取鼠标相对当前页面的坐标
    					 * 	但是不兼容IE8及以下
    					 *	
    					 *	因此我们选择获取滚动条滚动距离,将其加到div的偏移量上
    					 */
    					var left = event.clientX;
    					var top = event.clientY;
    					
    					//设置div偏移量
    					box1.style.left = left +sl+'px';
    					box1.style.top = top +st+'px';
    					
    				};
    			};
    			
    		</script>
    	</head>
    	<body>
    		<div id="box1"></div>
    	</body>
    </html>
    

    部分内容来源于网上教程,侵删。


  • 相关阅读:
    element-ui 表格实现单元格可编辑的示例
    vue.js数组追加合并与对象追加合并
    Gym 101471G BZOJ 4954 [WF2017]Replicate Replicate Rfplicbte
    Gym 100299E BZOJ 4054 [CERC2013]Escape (启发式合并)
    Gym 101239E BZOJ 4110 [CERC2013]Evolution in Parallel (DP、结论)
    Gym 101221I BZOJ 4080 [WF2014]Sensor Network (二分图匹配)
    Gym 101190D BZOJ 4842 Luogu P6967 LOJ #6071 [NEERC2016]Delight for a Cat (费用流)
    记录一次dubbo不能正常抛出特定异常
    JAVA 类加载机制学习笔记
    JAVA 垃圾回收读书笔记
  • 原文地址:https://www.cnblogs.com/meow999/p/12107867.html
Copyright © 2011-2022 走看看