运用jqury 制作图片跟随鼠标效果
下为效果图
那个小猴子脸上本来有个鼠标的
html 框架,
注意在引用的jquery原代码不要使用slim版本的,那个没有动画效果(貌似这个没有用到动画效果)
外部的js文件必须在jquery的后面
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="aaa.css">
<title>Document</title>
</head>
<body>
<div><img src="https://avatar.youkuaiyun.com/D/D/9/3_c_whatever.jpg" height="300px" width="400px"></div>
<div id="test"></div>
<div>you have change it <span>0</span> time(s)</div>
<button>click me </button>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="aaa.js"></script>
</body>
</html>
js文件代码
newFunction();
function newFunction() {
var $pic = $("div:first > img");
var $node;
$node = $("<div id='movePic'><img src='https://avatar.youkuaiyun.com/D/D/9/3_c_whatever.jpg' height='200px' width='300px'>nice job</div>");
$pic.after($node);
$pic.mousemove(function (e) {
$("#test").text(e.pageX + "---" + e.pageY);
$node.css("left", e.pageX + 30);
$node.css("top", e.pageY + 39);
});
$pic.hover(function () {
$node.show();
}, function () {
$node.hide();
});
}
使用$()方法直接创建html片段,不需要像原生js一样使用createNode,textNode什么的,
还是尽量少用全局变量
运用到了这两个jQuery的函数
1. mousemove()
https://api.jquery.com/mousemove/ 官方api文档
参数是一个函数,或句柄,这个方法能为目标元素处理鼠标在目标位置移动时需要的方法,也就是鼠标在图上动,就会不断触发这个函数,用id选择器选定并且用 .text()方法更新图片下方的x, y坐标。
2. .hover
接受两个函数当作参数,第一个函数是鼠标移动到目标位置时出发,第二个函数时鼠标移出目标函数时触发
运用show 和 hide 方法可以方便的修改目标节点 的css属性
最主要的还是不要把创建节点,修改节点搞混,否则移动鼠标创建了一大批节点