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

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

      show()方法和hide()方法是jQuery中最基本的动画方法。在HTML文档里,为一个元素调用hide()方法,会将该元素的display样式改为“none”。

    $("element").hide();

      与css()方法设置display属性效果相同。

    $("element").css("display","none");

      注意hide()方法在将“内容”的display属性值设置为“none”之前,会记住原先的display属性值(“block”或“inline”或其他除了“none”之外的值)。当调用show()方法时,就会根据hide()方法记住的display属性值来显示元素。比如,一元素的display属性的值是“block”,当单击“标题”链接执行hide()方法的时候,hide()方法会做两步动作,首先会记住“内容”的display属性的值“block”,然后把display属性的值设置为“none”。

      show()方法和hide()方法在不带任何参数的情况下,相当于css("display","none/block/inline"),作用是立即隐藏或显示匹配的元素,不会有任何动画。可以指定速度关键字,让元素具有动画效果,如:

    $("element").hide("slow");

      其他关键字还有“normal”和“fast”。slow的时间是600毫秒,normal是400毫秒,fast是200毫秒。

      也可以使用数字定值,如使元素在1秒(1000毫秒)内显示出来。

    $("element").show(1000);

      从代码执行中,可以发现,show()和hide()会同时对元素的高度、宽度和不透明度同时做操作,直至元素完全显示或消失。

      2.fadeIn()方法和fadeOut()方法

      与show()和hide()不同的是,fadeIn()和fadeOut()只改变元素的不透明度。fadeOut()方法会在指定的一段时间内降低元素的不透明度,直到元素完全消失(“display:none”).fadeIn()则相反。

      3.slideUp()方法和slideDown()方法

      slideUp()方法和slideDown()方法只会改变元素的高度。如果一个元素的display属性值为“none”,当调用slideDown()方法时,这个元素将由上至下延伸显示。slideUp()方法正好相反,元素将由下到上缩短隐藏。

      

      4.自定义动画方法animate()

      通常情况下,当方法无法满足用户的各种需求,那就需要对动画有更多的控制,需要采取一些高级的自定义动画来解决这些问题。在jQuery中,可以使用animate()方法来自定义动画。其语法结构是:

    animate(params,speed,callback);

      参数说明如下:

      param:一个包含样式属性及值的映射,比如{property1:"value1",property2:"value2",...}.

      speed:速度参数,可选。

      callback:在动画完成时执行的函数,可选。

      自定义简单动画

      有一个空白的HTML文档,里面有一个id=“panel”的<div>元素,当<div>元素被单击后,能在页面上横向飘动。

    <div id="panel"></div>

      给这个<div>元素添加css样式。

    #panel{
        position:relative;
        width:100px;
        height:100px;
        border:1px solid #0050D0;
        background:#96E555;
        cursor:pointer;
    }

      为了使这个元素动起来,我们给这个元素添加“left”样式属性。(需要改变元素的“top”、“left”、“bottom”、“right”样式属性,需要把元素的position设置为“relative”或者“absolute”)。

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"300px"},3000);
        })
    })

      点击id为“panel”的元素,会在3秒内向右移动300像素。

      累加、累减动画

      之前代码的基础上,在{left:"300px"}之前加上“+=”或者“-=”符号即表示在当前位置累加或者累减。

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"+=300px"},3000);  //在当前位置累加300px
        })
    })

      当元素被点击移动后,再次点击还会在现在的基础上继续向右移动。称为动画的累加。

      多重动画

      (1)同时执行多个动画

      如果需要同时执行多个动画,例如在元素向右滑动的同时,放大元素的高度。根据animate()方法的语法结构,可以写出一下的代码:

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"300px",height:"200px"},3000);
        })
    })

      (2)顺序执行多个动画

      animate()方法如果对同一个jQuery对象进行操作,可以改为链式的写法。

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"300px"},3000)
                    .animate({height:"200px"},3000);
        })
    })

      回调函数

      如果最后想改变元素的CSS样式。

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

      如果在链式操作后直接加上上述代码。预期的效果是在动画的最后一步改变元素的样式,而实际的效果是,刚开始执行动画的时候,css()方法就被执行了。出现这个问题的原因是css()方法并不会加入到动画队列中么事立即执行。可以通过回调函数(callback)对非动画方法实现排队。只要把css()方法写在最后一个动画的回调函数里即可。

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"300px"},3000)
                    .animate({height:"200px"},3000,function(){
                        $(this).css("border","5px solid blue");
                    });
        })
    })

      停止元素的动画

      很多时候需要停止匹配元素正在进行的动画,例如上例的动画,如果需要在某处停止动画, 需要使用stop()方法。stop()方法的语法结构为:

    stop([clearQueue],[gotoEnd]);

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

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

      再使用animate()方法的时候,要避免动画基类而导致的动画与用户的行为不一致。当用户快速在某个元素上执行animate()动画时,就会出现动画累计。解决办法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。

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

      这个判断方法在animate()动画中经常被用到。

       

      延迟动画

      在动画执行的过程中,如果想对动画进行延迟操作,那么可以使用delay()方法。

    $(function(){
        $("#panel").click(function(){
            $(this).animate({left:"300px"},3000)
                    .delay(1000)
                    .animate({height:"200px"},3000)
                    .delay(2000)
                    .fadeOut("slow");
        })
    })

      delay()方法允许我们将队列中的函数延时执行。它既可以推迟动画队列中函数的执行,也可以用于自定义队列。

      其他动画方法

      jQuery还有4个专门用于交互的动画方法。

      ♦ toogle(speed,[callback]).

      ♦ slideToggle(speed,[easing],[callback]).

      ♦ fadeTo(speed,opacity,[callback]).

      ♦ fadeToggle(speed,[easing],[callback]).

      toogle()

      可以切换元素的可见状态。如果元素是可见的,则切换为隐藏的;如果元素是隐藏的,则切换为可见的。

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

      slideToggle()

      通过高度变化来切换匹配元素的可见性。只调整元素的高度。

    $("#panel").click(function(){
        $(this).next().slideToggle();
    })

      fadeTo()

      可以把元素的不透明度以渐进方式调整到指定的值。值调整元素的不透明度,即匹配的元素的高度和宽度不会发生变化。

    $("#panel").click(function(){
        $(this).next().fadeTo(600,0.2);
    })

      当点击标签后,会在0.6秒内调整到指定的不透明度(20%)

      fadeToggle()

      通过不透明度变化来切换匹配元素的可见性。这个动画效果只调整元素的不透明度。

    $("#panel").click(function(){
        $(this).next().fadeToggle();
    })
  • 相关阅读:
    007 Android 单击事件、toast使用
    AdminService数据访问层
    DBHelper
    兄弟2820技术
    左右两侧采用绝对定位 中间同样采用margin-left margin-right方法:
    三层架构保存,更新,查询等一些列方法
    DropDownList的使用
    兄弟2820
    三层架构
    treevew
  • 原文地址:https://www.cnblogs.com/weilan/p/7201906.html
Copyright © 2011-2022 走看看