获取鼠标在盒子里的位置2——扩展实现二级菜单的位置联动

前言:

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
    	*{margin: 0;padding: 0;}
    	body{position: relative;margin: 10px;}
        .box{  
            width: 100px;  
            height: 100px;  
            background-color: pink;  
            overflow: auto; 
            cursor: pointer;
        }
        .box2{
        	width: 100px;
		    height: 100px;
		    background-color: pink;
		    overflow: auto;
		    position: absolute;
		    top: 0px;
		    left: 100px;
		    display: none;
        } 
    </style>  
</head>  
<body>  
    <div class="box">  
    	<p>语文</p>
    	<p>数学</p>
    	<p>历史</p>
    	<p>人与自然</p>
    	<p>体育</p>
    	<p>英语</p>
    	<p>人与自然</p>
    	<p>体育</p>
    	<p>英语</p>
    </div> 
    <div class="box2">  
    	<p>语文第一章</p>
    	<p>语文第二章</p>
    	<p>语文第三章</p>
    	<p>语文第四章</p>
    	<p>语文第五章</p>
    	<p>语文第六章</p>
    	<p>语文第七章</p>
    </div>  
  	<script src="jquery.min.js"></script>
    <script>  
    	$("body").on("click",".box",function(){
    		$(".box2").show();
    	  	var _this=$('.box');
			var mouh = evfun(_this,event);
			var box2top=Math.ceil(mouh.y/21)-1
			console.log(box2top);
			$(".box2").css("top",box2top*21)
    	})
    	
    	function evfun(_this,event){
        	event = event || window.event;  
        	//2.获取鼠标在整个页面的位置  
        	var pagex = event.pageX || scroll().left + event.clientX; 
            var pagey = event.pageY || scroll().top + event.clientY; 
            //3.获取盒子在整个页面的位置  
            var xx =$(_this).offset().left;  
            var yy = $(_this).offset().top;
            //4.用鼠标的位置减去盒子的位置
            var targetx = pagex - xx;  
            var targety = pagey - yy; 
            var xydata={
            	x:targetx,
            	y:targety
            }
            return xydata
        }
    	
		//封装的scrollTop
		function scroll() {  
		    if(window.pageYOffset != null) {  // ie9+ 高版本浏览器
		        // 因为 window.pageYOffset 默认的是  0  所以这里需要判断
		        return {
		            left: window.pageXOffset,
		            top: window.pageYOffset
		        }
		    }
		    else if(document.compatMode === "CSS1Compat") {    // 标准浏览器   来判断有没有声明DTD
		        return {
		            left: document.documentElement.scrollLeft,
		            top: document.documentElement.scrollTop
		        }
		    }
		    return {   // 未声明 DTD
		        left: document.body.scrollLeft,
		        top: document.body.scrollTop
		    }
		}
    </script>  
</body>  
</html>

效果:

说明:<div class="box"></div>和<div class="box2"></div>是两个同级的盒子

实现的效果,只是第二个盒子的位置相对于第一个盒子的点击位置联动变化

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值