javascript让图片移动的函数

JavaScript016

javascript让图片移动的函数,第1张

/**

* 简单自定义动画函数

* @param {objec} obj 一个元素对象

* @param {string} pos 表示移动到的目标地点

* @param {number} speed 速度大小,表示每秒移动的像素数,默认为1px/100ms

* @param {function} callback 动画执行完后调用的函数

* @return {[object]} 元素自身,方便链式写法

*/

function ani(obj, pos, speed, callback) {

/* 清除无用的定时器 */

if (obj.move) {

clearTimeout(obj.move)

}

obj.style.position = "absolute"

var speed = speed || 10,

x = parseInt(obj.style.left) || 0,

y = parseInt(obj.style.top) || 0

/* 初始化元素的相关属性值 */

if (!obj.x) {

obj.x = x

obj.y = y

obj.fx = x + pos[0]

obj.fy = y + pos[1]

}

/* 如果元素到达指定位置,则跳出并执行回调函数 */

if (x === (pos[0] + obj.x) &&y === (pos[1] + obj.y)) {

if (typeof callback === "function") {

callback()

}

obj.x = null

obj.y = null

obj.fx = null

obj.fy = null

return obj

}

/* 判断在水平方向上是应该往哪个方向移动 */

if (obj.x <obj.fx) {

if (x <obj.fx) {

obj.style.left = (x + speed) + "px"

}

} else {

if (x >obj.fx) {

obj.style.left = (x - speed) + "px"

}

}

/* 判断在垂直方向上是应该往哪个方向移动 */

if (obj.y <obj.fy) {

if (y <obj.fy) {

obj.style.top = (y + speed) + "px"

}

} else {

if (y >obj.fy) {

obj.style.top = (y - speed) + "px"

}

}

obj.move = setTimeout(function() {

ani(obj, pos, speed, callback)

}, 100)

}

window.onclick = function() {

ani($("#testAni")[0], [100, 0], 5, function() {

ani($("#testAni")[0], [-100, 0],null,function(){

alert("success")

})

})

}

可供参考

1.toggle():

toggle()方法除了模拟鼠标连续单击事件之外,同时会动态的隐藏改变当前元素的高度,宽度和不透明度,最终切换当前元素的可见状态。如果元素可见,则切换隐藏状态,如元素隐藏,切换可见状态

2.fadeln()与fadeOut()

这两个方法,实现了淡入和淡出的一个动画效果,fadeln()渐显效果,fadeout()渐隐效果,两者结合使用,可把元素隐藏在按钮中,在通过点击事件显示,两方法只改变元素的透明度,不修改其他属性

3.fadeToggle()

此方法会动态的改变当前元素的透明度,最终却换当前元素的可见状态。如果元素是可见的,则通过淡出效果切换隐藏;如果元素是隐藏的,则通过淡入效果切换可见状态,不设置参数时,默认0.4秒内发生淡入与淡出的动画效果

4.fadeTo()

fadeln()与fadeOut()方法都是渐隐渐显,透明度从1到0,从0到1实现一个渐隐渐显效果,而fadeToggle()方法则是可以控制1-0的透明度,为更好展示透明度的效果,可在页面中创造一个下拉框,用于保存透明度值,操作下拉框去控制图片透明度值

5.slideDown()与 slideUp()

slideDown()可改变元素高度,呈现一个滑动效果,由上往下滑动,直到显示最终的当前元素,slideUp()相反,由下往上滑动,直到隐藏最终的当前元素

6.slideToggle()

slideToggle()方法跟slideDown()与 slideUp() 两个方法有异曲同工之妙,同样可改变元素的高度,不同于slideDown()与 slideUp() 的效果, 这个方法是通过点击事情控制元素的隐藏和显示

7.animate()

这个方法是自定义动画效果的方法,高度,宽度,透明度,运行速度都是可通过自定义给属性,这个方法只能改变可以取数字值的css属性,如:大小,边框,内外边距,定位,字体,文本,背景,透明度。

8.stop()

停止动画,stop()方法能结束当前的动画,并立即进入到下一个动画。

js中的animate() 方法执行 CSS 属性集的自定义动画。

该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。