jquery 的 animate(left:1000px,1000);和animate(marginLeft:1000px,1000);有啥区别呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 的 animate(left:1000px,1000);和animate(marginLeft:1000px,1000);有啥区别呢?相关的知识,希望对你有一定的参考价值。
先解释一下animate()方法,animate()可 方法执行 CSS 属性集的自定义动画。该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。
animate格式:
animate(styles,speed,easing,callback)styles 必需,规定产生动画效果的 CSS 样式和值
speed 可选,规定动画的速度。默认是 "normal"
easing 可选,规定在不同的动画点中设置动画速度的 easing 函数
callback 可选,animate 函数执行完之后,要执行的函数
注意:只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。
题主用了left: 1000px 和 marginLeft: 1000px,其中left和marginLeft是styles参数,也就是css样式表。
HTML代码:
<div class=".div1" style="width:100px;height:100px;background:red;">这里是div
</div>
marginLeft:1000px,marginLeft为左外边距,这个横好理解,元素本身和内容距离左偏1000像素。直接使用就可以了:
.div1margin-left: 1000px;
left: 1000px,left为左偏移,同为元素本身和内容距离左偏1000像素。但需要注意的是left需要和position结合使用,需要定义position:absolute或者position:relative,如
.div1position:sbsolute;
left:1000px;
animate(marginLeft:1000px,1000) 是相当于自己原来的位置移动1000px;这个是占文档流的 参考技术B 前一个是左移1000像素动画,后一个是边距加1000像素,
效果是不一样的! 参考技术C animate的具体方法是这样:$(selector).animate(styles,speed,easing,callback)
很简单就看出问题来了,styles里的left和marginLeft,分别是css盒子模型里的2个不同的属性。一个是元素的相对位置在x轴上左移1000像素,另一个是元素的左外边距加大1000像素。
left只有在相对和据对定位中设定了才有效果,但是marginLeft是没有前提条件就能满足的。 参考技术D 设置left属性只对position设置了relative、absolute、fixed的元素有效;
设置margin-left属性只对position为relative、static的元素有效!
Jquery demo
$(".logo").click(function () { $(this) .animate({ left: -200 }) .animate({ left: 200 }) .animate({ left: -200 }) .animate({ left: 200 }) .animate({ left: 0 }); }); //左右滑动
以上是关于jquery 的 animate(left:1000px,1000);和animate(marginLeft:1000px,1000);有啥区别呢?的主要内容,如果未能解决你的问题,请参考以下文章