图片跟随鼠标移动效果的抖动问题

这篇具有很好参考价值的文章主要介绍了图片跟随鼠标移动效果的抖动问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

图片跟随鼠标移动效果的实现思路:

触发mousemove事件响应时,通过e.offsetX,e.offsetY获取到当前鼠标的位置。再修改图片的css样式中的top, left属性(图片采用绝对定位)。
代码如下:

<div id="angel">
        <img src="./img/angel.gif" alt="" >        
    </div>
	$(function(){
        var img = $("#angel")
        var timer = null
        $(document).mousemove(function(e){
            img.css({
                // top:e.pageY,
                // left:e.pageX,
                top:e.offsetY,
                left:e.offsetX
            })
        })
       })
	  *{
            margin:0;
            padding:0;
            box-sizing: border-box;            
        }
        body,html{
            overflow:hidden;
        }
        #angel{
            position:absolute;
            display: inline-block;
            width: 96px;
            height: 80px;
            background-color: pink;
        }
        #angel img{
            width: 100%;
            height: 100%;
        }

分析问题原因

offset是相对于事件源而言的,即,鼠标在哪个元素上移动,事件的offset属性就是相对于哪个元素而言。

鼠标移动时,由于图片移动得比鼠标慢,所以鼠标容易移动到图片的上方(一般是偏左上的位置),事件源在图片左上角时,offset值会猛然缩小;但
紧接着图片又随着鼠标移动到了右下方,而鼠标往右或下方向移动时,offset值又会因上述原因,如之前那样猛增猛减。

而图片的位置是相对于body而言的。body位置固定,而top, left的值随着offset值猛增猛减,其位置也随之不停抖动。
情况见下图(这里设置了背景色,方便看清图片的有效作用范围):
![请添图片跟随鼠标移动效果的抖动问题

使用offset时,浏览器渲染效率貌似也不太高。

解决方法

offsetX,offsetY用pageX,pageY代替.

图片跟随鼠标移动的其他问题

节流

增加一个定时器,单位时间内更新图片位置,即图片移动得慢一点。
js部分代码修改如下:文章来源地址https://www.toymoban.com/news/detail-485399.html

$(function(){
        var img = $("#angel")
        var timer = null
        $(document).mousemove(function(e){            
            if(timer !== null){
                return 
            }
            timer = setTimeout(function(){
                img.css({
                    top:e.pageY,
                    left:e.pageX,
                })
                clearTimeout(timer)
                timer = null
            },16)
        })
       })

到了这里,关于图片跟随鼠标移动效果的抖动问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • html+css+js实现小红点跟随鼠标移动
  • CSS实现鼠标跟随 3D 旋转效果,让交互活起来

    CSS实现鼠标跟随 3D 旋转效果,让交互活起来

    一淘模板(56admin.com)给大家介绍一下如何使用CSS实现有意思的鼠标跟随 3D 旋转效果,让交互更加生动,希望对大家有所帮助! 今天,群友问了这样一个问题,如下所示的鼠标跟随交互效果,如何实现: 简单分析一下,这个交互效果主要有两个核心: 借助了 CSS 3D 的能力 元

    2024年02月10日
    浏览(10)
  • Unity【角色/摄像机移动控制】【2.角色跟随鼠标转向】

    本章代码实现基于本系列的【1.角色移动】 在前面的基础上,我们在PlayerController脚本中添加如下函数,随后在update方法中调用即可: 其中mouseSensitivity是前面自定义的一个float变量,用来调节对鼠标转向速度,至此,当我们转动鼠标,角色也会跟着转动

    2024年02月22日
    浏览(5)
  • 【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    描述 实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 move_better.cs 物体根据按键移动

    2024年02月08日
    浏览(13)
  • echarts多图联动下,提示框(tooltip)位置跟随鼠标(拐点)移动

    echarts多图联动下,提示框(tooltip)位置跟随鼠标(拐点)移动

    tooltip提示框位置有单独的字段(position),相信大家都知道 大概说一下这几种方式: 第一种: 不设置position字段 ,默认不设置时位置会跟随鼠标的位置。(但我们的需求是:提示框始终在拐点的斜上方)。 第二种: 通过数组方式,里边可以填写数字也可以填写百分比 。例

    2024年02月16日
    浏览(10)
  • CSS mask 实现鼠标跟随镂空效果,阿里面试官必问

    CSS mask 实现鼠标跟随镂空效果,阿里面试官必问

    }` 效果如下: 已经全部都模糊了,只是圆形区域外暗一些。由于::before的尺寸占据整个容器,所以整个背后都变模糊了,圆形外部比较暗是因为半透明渐变的影响。 总之还是不能满足我们的需求,需要寻求新的解决方式。 五、CSS MASK 实现镂空 与其说是让圆形区域不模糊,还

    2024年04月25日
    浏览(11)
  • UE4: Niagara系统实现雨天效果,并跟随人物移动

    UE4: Niagara系统实现雨天效果,并跟随人物移动

    1.创建一个Niagara系统 选择Fountain选项,点一下加号,再点完成: 命名一下打开: 先从粒子生成的方向入手,在Niagara的界面中删掉“Add Velocity in Cone”,并添加“Add Velocity”,这样预览效果中的粒子就从椎体向上喷发,变成向下发射。 删掉之后: 然后将sphere location也删除,因

    2024年02月07日
    浏览(17)
  • vue自定义指令directives+div跟随鼠标移动的floatButton组件

    项目需求 实现一个悬浮按钮,可在每个页面悬浮,为了不遮挡可以再浏览器可视区任意移动,并且不能移动出可是区域 实现方式 通过vue自定义指令,监听鼠标移动事件,计算位移,使元素移动, 效果: 可移动的悬浮按钮 1.实现代码 2.悬浮按钮组件 3.悬浮按钮样式 待优化点

    2024年02月10日
    浏览(6)
  • Revit二次开发知识分享(二十四)实现鼠标可视化跟随动画效果

    Revit二次开发知识分享(二十四)实现鼠标可视化跟随动画效果

    背景:群友询问:怎样子实现在批量选择完管道,在点击放置标签时,想有一个可视化跟随的动画效果。然后研究了一番,下面提供了一个简易版的实行方案,大家可以参考学习。 源码 实现如下图所示的选择完管件后,鼠标动画跟随效果 其中Rectangle是当前视图边框投影到屏

    2024年02月10日
    浏览(23)
  • 【Element UI】解决el-tooltip组件在鼠标快速移动场景下出现的残影问题

    【Element UI】解决el-tooltip组件在鼠标快速移动场景下出现的残影问题

    当我们把el-tooltip组件直接拿来和el-table组件使用的时候,鼠标上下快速移动会出现如图残影和渐变消失的问题 如下图: 所以我们去看一下官网 我们这时候试一试将 transition 属性设置为空 代码如下: 发现渐变消失是解决了但是并没有解决鼠标快速移动产生残影的问题 最终代

    2024年02月19日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包