JS之鼠标跟随

需求:点击页面的任何地方,图片跟随鼠标移动到点击位置
思路:获取鼠标在页面中的位置,然后图片缓慢运动到鼠标点击的位置(兼容ie6,7做pageY和pageX)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
<style type="text/css">
body{
    height: 5000px;
}
img{
    position: absolute;
    padding: 10px 0;
    cursor: pointer;
    border:1px solid #ccc;
}
</style>
</head>
<body>
<img src="../images/img.jpg" width="100"/>
<script type="text/javascript">
//需求:点击页面的任何地方,图片跟随鼠标移动到点击位置
//思路:获取鼠标在页面中的位置,然后图片缓慢运动到鼠标点击的位置
//兼容ie6,7做pageY和pageX
//原理:鼠标在页面的位置 = 被卷去的部分 + 可视区域部分
//步骤:
//1.老三步
//2.获取鼠标在页面的位置
//3.利用缓动原理,慢慢的运动到指定位置(包括左右和上下)

//获取相关元素并绑定事件
var img = document.getElementsByTagName("img")[0];
var timer =null;
var targetx = 0;
var targety = 0;
var leaderx = 0;
var leadery = 0;
//给整个文档绑定点击事件获取鼠标的位置
document.onclick = function(event){
    //兼容获取事件对象
    event = event || window.event;
    //鼠标在页面的位置 = 被卷去的部分+可视区域部分
    var pagex = event.pageX || scroll().left + event.clientX;
    var pagey = event.pageY || scroll().top + event.clientY;
    targety = pagey-30;
    targetx = pagex-50;
    //利用缓动动画
    //要用定时器,先清定时器
    clearInterval(timer);
    timer = setInterval(function(){
        //为盒子的位置获取X值
        leaderx = img.offsetLeft;
        //获取步长
        var stepx = (targetx - leaderx)/10;
        //二次处理步长
        stepx = stepx>0?Math.ceil(stepx):Math.floor(stepx);
        leaderx =leaderx +stepx;
        //赋值
        img.style.left = leaderx +"px";

        //为盒子的位置获取Y值
        leadery = img.offsetTop;
        //获取步长
        var stepy = (targety - leadery)/10;
        //二次获取步长
        stepy= stepy>0?Math.ceil(stepy):Math.floor(stepy);
        leadery = leadery +stepy;
        //赋值
        img.style.top = leadery + "px";

        //清除定时器
        if (Math.abs(targety - img.offsetTop)<=Math.abs(stepy)&&Math.abs(targetx-img.offsetLeft)<=Math.abs(stepx)) {
            img.style.top = targety + "px";
            img.style.left = targetx +"px";
            clearInterval(timer);
        }
    },30);
}

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

原文地址:https://www.cnblogs.com/creazybeauty/p/8177310.html

时间: 2024-11-09 01:01:26

JS之鼠标跟随的相关文章

支持鼠标跟随的JS+CSS链接提示框

觉得纯css的tips限制有点大,而且好像兼容性也不好,这是我发现的一个Js+CSS的链接提示框效果,还会跟随鼠标而移动,而且兼容性也不错,代码与大家分享:前端分享 .代码   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&qu

鼠标跟随导航

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>鼠标跟随菜单</title> <style> *{margin: 0;padding:0; } ul{list-style: none;} a{text-decoration: none;} .nav{width: 100%;height: 60px;background-color:

鼠标跟随提示框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>鼠标跟随提示框</title>

js实现鼠标拖拽div-------Day44

如果去问这样一个问题"你觉得鼠标操作简单,还是键盘操作简单",相信会有多数人都会回答鼠标吧,毕竟键盘按钮那么多,如果手小了或者手法不规范了,太容易出问题了,也对操作的速度和有效性是大大的降低了,当然不可否认,会有那么一批人,操作起键盘来完全可以忽略鼠标的,但这些都应该是骨灰级别的了吧,起码我现在的层次还接触不到,只能向往. 然而,当面对这么一个问题时,我突然有点纠结,因为毕竟以前我也是那么想的,但是这次开发让我是大跌眼镜,键盘操作我在开发中,我只能判定其按键是否按键,然后根据不同按键进

JS Event 鼠标拖拽事件

<!DOCTYPE html><html> <head>        <meta charset="UTF-8">        <title>JS Event鼠标拖拽事件</title>                <style>            #box{width:200px;height:200px;background:#000;position:absolute;}       

js中鼠标事件总结

js中鼠标事件主要有onclick,onmousedown,onmouseup,oncontextmenu,ondblclick,所有的这些事件都包含有一个事件对象event,当然在IE低版本下,event对象是挂在window底下的.这个我们另行讨论. 1.通过html添加事件 <input type="button" click="alert(1)"/> 2.通过DOM0级方式添加事件 <input type="button"

不用js实现鼠标放上去改变文字内容

css样式 .remind span {display:block;margin-top:-22px;} .remind a:hover {padding-top:22px;}.remind a {float:left;overflow:hidden;}.remind{height:22px;line-height:22px;overflow:hidden;padding-left:10px;} html代码 <div class="remind"><a href=&

js禁止鼠标右键和禁止ctrl+c复制

<script type="text/javascript"> //禁止ctrl复制 document.onkeydown=function(){ if((event.ctrlKey) && (window.event.keycode==67)){ event.returnValue=false; alert("Ctrl+C被禁止啦!"); } } document.onmousedown=function(){ if(event.but

js中鼠标滚轮事件详解

(以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用js对鼠标滚轮事件进行控制,滚轮事件其中考虑浏览器兼容性问题 附加事件 其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件. /*IE注册事件*/ if(document.attachEvent){ document.attachEvent('onmousewheel',scrollFunc