鼠标事件
一、事件类型
onclick(单击)、ondblclick(双击)、oncontextmenu(右键菜单)、onmouseover(移入)、onmouseout(移出)、onmouseenter(移入)、onmouseleave(移出)、onmousedown(按下)、onmouseup(抬起)、onmousemove(移动)
二、坐标位置
1.screenX在屏幕中的X坐标
screenY在屏幕中的Y坐标
2.相对于body
(1)clientX事件发生时鼠标指针在视口中的水平坐标(不包含滚动距离)
(2clientY在视口中的垂直坐标
案例:鼠标拖拽图片实现随意移动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>拖拽</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.drag {
width: 200px;
height: 200px;
background-color: tomato;
position: absolute;
background-image: url(https://img2.baidu.com/it/u=692058912,2585748925&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=889);
background-size: cover;
background-position: center center;
}
</style>
</title>
</head>
<body>
<div class="drag"></div>
</body>
<script>
var drag = document.querySelector(".drag");
// 鼠标按下事件,获取起点位置信息
drag.onmousedown = function (e1) {
var x1 = e1.clientX;
var y1 = e1.clientY;
var l1 = this.offsetLeft;
var t1 = this.offsetTop;
// 鼠标移动事件,计算差值,drag重新定位
window.onmousemove = function (e2) {
var x2 = e2.clientX;
var y2 = e2.clientY;
var l2 = l1 + (x2 - x1);
var t2 = t1 + (y2 - y1);
// 边界处理
l2 = l2 < 0 ? 0 : (l2 > window.innerWidth - drag.offsetWidth ? window.innerWidth - drag.offsetWidth : l2);
drag.style.left = l2 + 'px';
drag.style.top = t2 + 'px';
}
}
// 当鼠标抬起时,去掉mousemove事件
drag.onmouseup = function () {
window.onmousemove = null;
}
</script>
</html>
UI事件
1、load 当页面完全加载后再window上触发,图片也可以触发load事件
2、resize当窗口大小变化时再window上触发
3、scroll当用户滚动带滚动条的元素的内容时,在该元素上触发
案例:实现类小火箭回到顶部效果
说明:在鼠标向下移动50像素时小火箭才出现,之后再点击小火箭动画效果回到顶部
效果图展示:回到顶部-CSDN直播
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>回到顶部</title>
<style>
.nr {
width: 500px;
height: 2000px;
background-color: pink;
}
.hj {
width: 0px;
height: 0px;
/* background-color:red; */
border-right: 20px solid transparent;
border-left: 20px solid transparent;
border-top: 20px solid transparent;
border-bottom: 20px solid brown;
position: absolute;
right: 0;
bottom: 50px;
position: fixed;
display: none;
}
.hj:hover{
cursor: pointer;
}
</style>
</head>
<body>
<div class="nr"></div>
<div class="hj"></div>
</body>
<script>
var hj = document.querySelector(".hj");
window.onscroll = function () {
if (document.documentElement.scrollTop > 50) {
hj.style.display = "block";
} else {
hj.style.display = "none";
}
}
hj.onclick = function () {
move();
}
var timer = null;
function move() {
clearInterval(timer);
var t = 20;
var s = document.documentElement.scrollTop;
var v = s / t;
var count = 0;
timer = setInterval(function () {
count++;
s -= v;
if (t === count) {
clearInterval(timer);
s = 0;
}
document.documentElement.scrollTop = s;
}, 30)
}
</script>
</html>