/*** Created by Administrator on 2017/1/14.*/function changePicture() {//拿到div对象var gallery = document.getElementById("picture_gallery");var gallery_img = gallery.getElementsByTagName("img");var current_gallery_img = gallery_img[0];current_gallery_img.style.position = "relative";current_gallery_img.style.top = 0;current_gallery_img.style.left = 0;var atag = document.getElementsByTagName("a");atag[0].onmouseover = function () {moveElement("default",-100,0,10);}atag[1].onmouseover = function () {moveElement("default",-200,0,10);}atag[2].onmouseover = function () {moveElement("default",-300,0,10); //如果多次鼠标移动 那么会有很多个moveElemnt方法同时执行}}function moveElement(element_id,final_x,final_y,interval) {// 检测if(!document.getElementById) return false;if(!document.getElementById(element_id)) return false;// 获取元素并拿出他当前的XY值var elem = document.getElementById(element_id);if(elem.formove){clearTimeout(elem.formove);}var elem_current_x = parseInt(elem.style.left);var elem_current_y = parseInt(elem.style.top);// 进行判断if(elem_current_x == final_x && elem_current_y==final_y) return false;if(elem_current_x < final_x){elem_current_x++;}if(elem_current_x > final_x){elem_current_x--;}if(elem_current_y < final_y){elem_current_y++;}if(elem_current_y > final_y){elem_current_y--;}elem.style.left = elem_current_x + "px";elem.style.top = elem_current_y + "px";var repeat = "moveElement('"+element_id+"','"+final_x+"','"+final_y+"','"+interval+"')";elem.formove = setTimeout(repeat,interval);
}

有很多需要注意的地方
1.

 atag[0].onmouseover = function () {moveElement("default",-100,0,10);}atag[1].onmouseover = function () {moveElement("default",-200,0,10);}atag[2].onmouseover = function () {moveElement("default",-300,0,10); //如果多次鼠标移动 那么会有很多个moveElemnt方法同时执行

这里最好别用for循环 因为雪碧图的x轴移动非常明确 用for并没有什么好处

2.

if(elem.formove){clearTimeout(elem.formove);}

这里有一个判断语句 因为你鼠标移动会生成很多的 move方法 如果有一个线程已经出现了 那么就取消之前的线程 同一时间下只有一条在执行

这里有个重要逻辑问题
首先 你的if探测语句必须得在函数运行的前面 这样才能在运行前进行一个复位

然后 clearTimeout是不支持局部变量的 他是无法取消的

所以 你得写在前面并且使用全局变量

但是 if(全局变量) 这是无法探测的 直接报错 没有返回值 所以你得把之前timeout的返回值放在 elem.属性里面 这样他是有返回值的 探测到为true 否则为flase

这种给某个元素增加属性是被JS所支持的 并且专属与这个元素
但要注意只能给获取到的元素对象添加属性 你给一个普通的局部变量肯定是不行的

javascript基础 图片雪碧动画相关推荐

  1. 动画版雪碧_雪碧动画:吸血鬼凯蒂的生活

    动画版雪碧 我一直很喜欢网页游戏: 它们只是制作有趣,易于编码(大多数情况下),并且当用户只需要单击一个链接即可开始玩游戏时,游戏的可访问性就非常不错. Ajax和移动的dom元素带来了一些乐趣,但是 ...

  2. 雪碧动画:吸血鬼凯蒂的生活

    我一直很喜欢网页游戏: 它们只是制作有趣,易于编码(大多数情况下),并且当用户只需要单击一个链接即可开始玩游戏时,游戏的可访问性就非常不错. Ajax和移动的dom元素带来了一些乐趣,但是限制了您可以 ...

  3. 动画版雪碧_雪碧动画:老板凯蒂

    动画版雪碧 这是从Sprite Animations:Vampire Kitty Lives开始的教程的延续. 那篇文章以承诺我们会有所改进而结束. requestAnimFrame setTimeo ...

  4. 雪碧图 游戏开发_Android游戏开发–雪碧动画

    雪碧图 游戏开发 如果到目前为止您仍然关注该系列 ,我们将在处理触摸,显示图像和移动它们方面广为人知. 但是,动态图像看起来很呆板,因为它看起来确实是假的和业余的. 为了给角色一些生活,我们将需要做更 ...

  5. javascript实现图片左右移动动画

    图片的左右移动,具备像荡秋千一样的动画效果,图片自己可重新定义,移动速度和距离也可在代码内设定,挺简单的Js生成动画的特效代码,仅供参考. <!DOCTYPE html> <html ...

  6. Android游戏开发–雪碧动画

    如果到目前为止您仍然关注该系列,我们将在处理触摸,显示图像和移动它们方面广为人知. 但是,动态图像看起来很呆板,因为它看起来确实是假的和业余的. 为了给角色一些生活,我们将需要做更多的事情. 这就是动 ...

  7. 前端基础入门之背景background-image 、 雪碧图与渐变

    文章目录 背景 1. PS 的基本设置 2. 背景 练习 1:线性渐变效果的背景图 练习 2:按钮点击效果 雪碧图与渐变 3. 雪碧图 4. 线性渐变 5. 径向渐变 背景 1. PS 的基本设置 工 ...

  8. 雪碧图 css 使用方式与 Js使用方式

    效果链接 示例雪碧图如下,雪碧图图片资源来源于力扣官网中头像悬浮Dark Side功能. 雪碧图分析:该雪碧图横向为12等分,高度32px 1. JavaScript方式使用雪碧图(猜测力扣使用的方式 ...

  9. Web前端之背景、雪碧图

    目录 一.背景 二.雪碧图 一.背景 background-color 设置背景颜色 background-image 设置背景图片 如果背景图片大小小于元素,则背景图片会自动在元素中平铺将元素铺满 ...

最新文章

  1. 36晋级12第五场:冯志刚决胜入围(节目视频)
  2. redis安装及错误排查
  3. python语言的理解-使用Python语言理解递归
  4. 创新、颠覆、引领,从 0 到百亿美元市值的创操作指南
  5. 利用 Python 实现多任务进程
  6. Redis都有哪些监控指标,看完你就懂了!
  7. 自主驱动发展 创新引领未来丨第九届数据技术嘉年华大会全议程精彩呈现
  8. 5G iPhone SE或将在明年一季度推出 明年有望生产3000万部
  9. 骆斌软件工程基础思维导图
  10. [转]地图的色彩设计——艺术与技术共存
  11. 【问题9】Redis热点Key发现及常见解决方案
  12. 使用IDEA创建Android项目
  13. LoadRunner教程(2)-LoadRunner性能测试利器
  14. 信噪比的定义及计算方法
  15. 项目经理要具备怎样的素质和能力?
  16. vue项目如何集成良田高拍仪(二次开发)
  17. 小米开源:站在巨人肩膀上的创新
  18. 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!(dij+bitset)
  19. 联发科5G基带处理器MT6297(Helio M70)
  20. MedianFlow跟踪算法

热门文章

  1. 在ARM M4上运行神经网络,AI芯片公司Kneron获新一轮融资,阿里巴巴创业者基金领投
  2. 分享88个ASP贺卡图片源码,总有一款适合您
  3. text无法使用空格 unity_Unity-Text空格造成自动换行+自定义Text
  4. 设计模式1-策略模式全面解析+案例实践+总结
  5. 人工蜂群算法的python实现
  6. 个人项目总结-瑞吉外卖/传智健康/黑马点评
  7. 怎么解决WIN7 连接samba连接不上的问题
  8. centos卸载软件及其依赖方法
  9. nginx笔记 安装nginx 配置 反向代理 多虚拟主机
  10. 交付程序不给钱,程序员一怒之下开源客户项目代码