zoukankan      html  css  js  c++  java
  • jQuery中的动画

    1.show()方法和hide()方法

    控制元素的显示状态— —出现和隐藏,同时改变内容的高度、宽度和不透明度,直至这三个属性值为100%或为0(display:none)。相当于css中的display:block/inline/none;

    注意:用jQuery做动画效果要求在标准模式下,否则可能会引起动画抖动。标准模式即要求文件头部包含如下的DTD定义:

    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://wslideww.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

    参数:fast— —200ms、normal— —400ms、slow— —600ms、指定数字(ms);参数不是数字加引号,参数是数字可不加。

    (1)fadeIn()方法和fadeOut()方法

    只改变元素的不透明度— —增加透明度和降低透明度,直至元素完全消失(display:none)

    (2)slideUp()方法和slideDown()方法

    只改变元素的高度— —由下至上收起和由上至下展开

    2.animate()方法—自定义动画

    left属性:该属性定义了定位元素外边距边界与其包含块左边界之间的偏移。

    注释:如果 "position" 属性的值为 "static",那么设置 "left" 属性不会产生任何效果。

    格式:animate(params,speed,callback)

    (1)第一个参数params:一个包含样式属性及值得映射,例子:{property:“value1”,property:“value1”。。。。}

    (2)第二个参数speed:速度参数

    (3)第三个参数callback:回调函数,动画完成时执行的动作

    补充:①属性的值可以累加、累减,animate({left:"+=500px"})

               ②设置不同的属性可同时执行多个动画,也可拆开代码按顺序执行

               ③animate()方法都是对同一个jQuery对象进行操作,可以用链式的写法实现多重操作

    3.动画回调函数

    动画队列:动画效果的执行具有先后顺序

    注释:只有动画的方法才能加入到动画队列中,非动画方法不会加入动画队列,而是立即执行,可通过将非动画方法写在回调函数中来对非动画方法实现排队。css()方法就不会加入到动画队列中。

    解决办法:可以使用回调函数(callback)对非动画方法实现排队,只要把css()方法写在最后一个动画的回调函数里,callback回调函数适用于jQuery所有的动画效果方法

    4.停止动画——stop()方法

    结构:stop([clearQueue],[gotoEnd])

    clearQueue,gotoEnd都是可选参数,为布尔值。clearQueue表示是否要清空未执行完的动画队列。gotoEnd表示是否直接将正在执行的动画跳转到末状态

    如果直接使用stop()方法,会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。

    经常会遇到这种情况,在为一个元素绑定hover事件之后,用户把光标移入元素时会触发动画效果,当这个动画还没结束时,用户就将光标移出这个元素,那么光标移出的动画效果将会导致动画效果与光标的动作不一致。此时,只要在光标的移入、移出动画之前加入stop()方法即可解决这个问题。stop()方法会结束当前正在进行的动画,并立即执行队列中的下一个动画。

    $("#panel").hover(function(){
                   $(this).stop()
                             .animate({height:"150","300"},200);
             },function(){
                    $(this).stop()
                              .animate({height:"20","60"},300);
    }); 

    如果遇到组合动画,这时就需要将stop的第一个参数设为true

    $("#panel").hover(function(){
                   $(this).stop(true)
                             .animate({height:"150"},200)
                             .animate({"300"},300);
             },function(){
                    $(this).stop(true)
                              .animate({height:"20"},200)
                              .animate({"60"},300);
    }); 

    第二个参数可用于让正在执行的动画直接到达结束时刻的状态,通常用于后一个动画需要基于前一个动画的末状态的情况

    stop(false,true):让当前动画直接到达末状态

    stop(true,true):停止当前动画并直接到达当前动画的末状态,并清空动画队列

    注意:jQuery只能设置正在执行的动画的最终状态

    5.判断元素是否处于动画状态

    问题:在使用animate()方法时,要避免动画积累而导致的动画与用户的行为不一致。当用户快速在某个元素上执行animate()动画时,就会出现动画积累。

    解决:判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。

    if(!$(element).is(":animate")){
         //如果当前没有进行动画,则添加新动画
    }
    

    6.延迟动画——delay()方法

    7.其他动画方法——用于交互的动画方法

    (1)toggle()方法:切换元素的可见状态。如果元素是可见的切换为隐藏,如果元素是隐藏的切换为可见的。

             toggle()方法的另一个用法是模拟鼠标连续单击事件。

    格式:toggle(speed,[callback])

    1$("#panel").click(function(){
    2    $(this).next().toggle();
    3}
    

      相当于:

    1 $("#panel").toggle(function(){
    3                $(this).next().show();
    4        },function(){
    5                 $(this).next().hide();
    6        })
    

    (2)slideToggle()方法:通过高度变化来切换匹配元素的可见性,使用方法同toggle

    (3)fadeTo()方法:把元素的不透明度以渐进方式调整到指定的值,使用方法同toggle

    (4)fadeToggle()方法:通过不透明度变化来切换匹配元素的可见性,使用方法同toggle

  • 相关阅读:
    JavaScript autoComplete 1.2
    Linux下安装配置git
    《SQL Server 2008从入门到精通》20180627
    《SQL必知必会》知识点汇总
    关于js的setTimeout和setInterval
    关于js的闭包
    web图片类型
    关于绑定事件
    js原型与继承
    关于js的mouseout
  • 原文地址:https://www.cnblogs.com/bobonote/p/7241029.html
Copyright © 2011-2022 走看看