图片跟着鼠标移动—理解page系列、client系列、scroll系列和window.event和window.e的兼容问题

要点:

1.这个例子中,如果可以直接pageX或者pageY就可以直接写一步操作即可,因为IE8不支持,通过 pageX (页面的具体横坐标位置)= scrollLeft(卷曲的横坐标距离) + clientX(可视区域横轴距离)这样曲线兼容 。

2.在JS高级里面,有window.event来获取函数对象,而在谷歌火狐直接可以通过传参返回,以后再详细说明。

3.这个例子中,是通过对象内部调用另外一个对象的方法实现的,注意理解。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		body{
			height: 1800px;
		}
		img{
			position: absolute;
			width: 250px;
			height: auto;
		}
	</style>
</head>
<body>
	<img src="images23/zhuqiu.gif" id="zhuqiu">
	<script type="text/javascript">
		function myGet(id){
			return document.getElementById(id);   
		}

		var evt = {
			getEvent:function(evt){
				return window.event || evt; 
			},
			// 兼容IE浏览器不支持.evt的事件
			getClientX:function(evt){
				return this.getEvent(evt).clientX;
			},
			// 可视区域横坐标
			getClientY:function(evt){
				return this.getEvent(evt).clientY;
			},
			// 可视区域纵坐标
			getScrollLeft:function(){
				return window.pageXOffset || document.body.scrollLeft 
				|| document.documentElement.scrollLeft || 0;
			},
			// 兼容向左卷曲的距离
			getScrollTop:function(){
				return window.pageYOffset || document.body.scrollTop
				|| document.documentElement.scrollTop || 0;
			},
			//兼容向右卷曲的距离
			getPageX:function (evt){
				return this.getEvent(evt).pageX ? this.getEvent(evt).pageX
				: this.getClientX(evt) + this.getScrollLeft();
			},
		    // 鼠标的位置用的是pageX或者pageY属性,但是IE8不兼容这个属性,只能通过卷曲距离 + 可视距离曲线兼容 
		    getPageY:function(evt){
				return this.getEvent(evt).pageY ? this.getEvent(evt).pageY
			    : this.getClientY(evt) + this.getScrollTop();
			}
		}

	  document.onmousemove=function (e) {
	    myGet("zhuqiu").style.left=evt.getPageX(e)+"px";
	    myGet("zhuqiu").style.top=evt.getPageY(e)+"px";
	  };

	</script>
</body>
</html>

效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值