不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点
第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

 该实例利用jQuery效果animate() 方法改变CSS背景定位属性实现动画效果,CSS背景属性值是逐渐改变的,这样视觉上就达到动画效果。

在写入这样的无序列表:

XML/HTML代码
  1. <ul>  
  2.   <li><a href="#">Home</a></li>  
  3.   <li><a href="#">About</a></li>  
  4.   <li><a href="#">Contact</a></li>  
  5. </ul>  

定义下面的CSS样式:

CSS代码
  1. ul { list-style:nonemargin:0; padding:0; }  
  2. li { float:leftwidth:100pxmargin:0; padding:0; text-align:center; }  
  3. li a { display:blockpadding:5px 10pxheight:100%; color:#FFFtext-decoration:noneborder-right:1px solid #FFF; }  
  4. li a { background:url(bg.jpg) repeat 0 0; }  
  5. li a:hover { background-position:50px 0; }  

下面是实现效果的核心jQuery代码:

JavaScript代码
  1. $('#nav a').css({  
  2.     backgroundPosition: "0 0"  
  3. }).mouseover(function () {  
  4.     $(this).stop().animate({  
  5.         backgroundPosition: "(0 -250px)"  
  6.     }, {  
  7.         duration: 500  
  8.     })  
  9. }).mouseout(function () {  
  10.     $(this).stop().animate({  
  11.         backgroundPosition: "(0 0)"  
  12.     }, {  
  13.         duration: 500  
  14.     })  
  15. })  

 

jQuery动画回调函数

[不指定 2013/05/18 23:14 | by 刘新修 ]

在上一篇文章中,如果想在最后一步切换元素的CSS样式,而不是隐藏元素:

css("border","solid 5px blue");

如果知识按照常规的方式,将fadeOut(“slow”)改为css(“border”,”solid 5px blue”),并不能达到预期的效果。预期效果是在动画的最后一步改变元素的样式,而实际的效果是,刚开始执行动哈ude时候,css()方法就被执行过了。

出现这个问题的原因是css()方法并不会加入到动画队列中,而是立即执行。可以使用回调函数(callback)对非动画方法实现排队。只要把css()方法写在最后一个动画的回调函数里即可。代码如下:

JavaScript代码
  1. $(function () {  
  2.     $("#panel").click(function () {  
  3.         $(this).animate({  
  4.             left: "400px",  
  5.             height: "200px",  
  6.             opacity: "1"  
  7.         }, 3000).animate({  
  8.             top: "200px",  
  9.             width: "200px"  
  10.         }, 3000, function () {  
  11.             $(this).css("border", "5px solid blue");  
  12.         })  
  13.     });  
  14. });  

这样以来,css()方法就加入到动画队列中了,从而满足了上文提出的需求。

 

第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]