mouseEvent属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#box{
width: 100px;
height: 100px;
background-color: aqua;
}
.box2{
height: 2000px;
}
</style>
</head>
<body>
<div id="box"></div>
<div class="box2"></div>
<script type="text/javascript">
var box1=document.getElementById('box');
box1.onclick=function (e) {
console.log(e.clientX);
console.log(e.clientY);
console.log('-------');
console.log(e.pageX);
console.log(e.pageY);
console.log('------');
console.log(e.screenX);
console.log(e.screenY);
console.log('------');
console.log(e.offsetX);
console.log(e.offsetY);
}
</script>
</body>
</html>
案例–鼠标跟随
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#follow{
width: 100px;
height: 100px;
background-color: pink;
position: absolute;
left: 0px;
top: 0px;
cursor: move;
}
</style>
</head>
<body>
<div id="follow"></div>
<script type="text/javascript">
var box=document.getElementById('follow');
window.onmousemove=function (e) {
box.style.left=e.pageX-box.offsetWidth/2+'px';
box.style.top=e.pageY-box.offsetHeight/2+'px';
}
</script>
</body>
</html>
元素的offset属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
.father{
width: 300px;
height: 300px;
background-color: blue;
position: relative;
}
#son{
width: 100px;
height: 100px;
background-color: red;
position: absolute;
left: 30px;
top: 30px;
}
</style>
</head>
<body>
<div class="father">
<div id="son">
</div>
</div>
</body>
<script type="text/javascript">
var son=document.getElementById('son');
son.onclick=function() {
console.log(son.offsetLeft);
console.log(son.offsetTop);
console.log('-------');
console.log(son.offsetWidth);
console.log(son.offsetHeight);
console.log('------');
console.log(son.offsetParent);
}
</script>
</html>
点击拖拽案例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#box{
width: 100px;
height: 100px;
background-color: #00FFFF;
position: absolute;
left: 0px;
top: 0px;
}
</style>
</head>
<body>
<div id="box"></div>
</body>
<script type="text/javascript">
var box=document.getElementById('box');
box.onmousedown=function (e) {
var mouseLeft=e.pageX-box.offsetLeft;
var mouseTop=e.pageY-box.offsetTop;
window.onmousemove=function (e) {
box.style.left=e.pageX-mouseLeft+'px';
box.style.top=e.pageY-mouseTop+'px';
}
box.onmouseup=function () {
window.onmousemove=null;
}
}
</script>
</html>
案例–放大镜
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
#minBox{
width: 450px;
height: 450px;
border: 1px solid orange;
position: relative;
top: 50px;
left: 50px;
}
#maskBox{
width: 200px;
height: 200px;
background-color: orange;
opacity: 0.5;
position: absolute;
top: 0px;
left: 0px;
display: none;
}
#maxBox{
width: 600px;
height: 600px;
border: 1px solid blue;
position: absolute;
left: 560px;
top: 0px;
overflow: hidden;
display: none;
}
#maxIamge{
position: relative;
}
</style>
</head>
<body>
<!-- 小盒子 -->
<div id="minBox">
<img src="img/min.jpg" >
<div id="maskBox"></div>
</div>
<!-- 大盒子 -->
<div id="maxBox">
<img src="img/max.jpg" id="maxIamge">
</div>
</body>
<script type="text/javascript">
var minBox=document.getElementById('minBox');
var maskBox=document.getElementById('maskBox');
var maxBox=document.getElementById('maxBox');
minBox.onmouseover=function (e) {
maskBox.style.display='block';
maxBox.style.display='block';
}
minBox.onmousemove=function (e) {
var minLeft=e.pageX-minBox.offsetLeft-maskBox.offsetWidth/2;
var minTop=e.pageY-minBox.offsetTop-maskBox.offsetHeight/2;
var maxMoveLeft=minBox.offsetWidth-maskBox.offsetWidth;
var maxMoveTop=minBox.offsetHeight-maskBox.offsetHeight;
if(minLeft<=0){
minLeft=0;
}else if(minLeft>maxMoveLeft){
minLeft=maxMoveLeft;
}
if(minTop<=0){
minTop=0;
}else if(minTop>maxMoveTop){
minTop=maxMoveTop;
}
maskBox.style.left=minLeft+'px';
maskBox.style.top=minTop+'px';
var maxImg=document.getElementById('maxIamge');
var rateX=minLeft/maxMoveLeft;
var rateY=minTop/maxMoveTop;
maxImg.style.left=-(maxImg.offsetWidth-maxBox.offsetWidth)*rateX+'px';
maxImg.style.top=-(maxImg.offsetHeight-maxBox.offsetHeight)*rateY+'px';
}
minBox.onmouseout=function (e) {
maskBox.style.display='none';
maxBox.style.display='none';
}
</script>
</html>