场景切换的集合移动,旋转,淡入淡出等

2020-05-07 13:42:13

参考地址 HTML5 - 用CSS3动画制作场景切换效果(移动,旋转,淡入淡出等)

上面这个连接点击进去,会有一个demo,里面又60多种场景切换的动画。代码简单,你可以根据自己的需求选择动画。


两个场景(即两个div视图)切换的时候,如果想添加个过渡动画,除了可以使用js来实现,还可以通过CSS3的animation属性来实现。
(注意:Internet Explorer 9 以及更早的版本不支持 animation 属性。)

下面做了个过渡动画汇总,包含常见的动画效果,效果图如下:
这里写图片描述

点击此处查看运行效果。

代码如下:

<!DOCTYPE html><html><head>
  <meta charset="utf-8">
  <title>HTML5-页面切换动画</title>
  <link href="animations.css" rel="stylesheet">
  <script src="modernizr.custom.js"></script>
  <script src="jquery-1.8.0.min.js"></script>
  <style>
    #viewsWrapper {        top:0px;        left:0px;        width:300px;        height:200px;        position:relative;        overflow: hidden;    }

    #view1 {        background:#dddd00;    }

    #view2 {        background:#ff00ff;    }

    #view3 {        background:#cc00ff;    }

    #view4 {        background:#00cccc;    }

    .pt-page {        width: 100%;        height: 100%;        position: absolute;        top: 0;        left: 0;        visibility: hidden;        overflow: hidden;        -webkit-backface-visibility: hidden;        -moz-backface-visibility: hidden;        backface-visibility: hidden;        -webkit-transform: translate3d(0, 0, 0);        -moz-transform: translate3d(0, 0, 0);        transform: translate3d(0, 0, 0);        -webkit-transform-style: preserve-3d;        -moz-transform-style: preserve-3d;        transform-style: preserve-3d;    }
    .pt-page-current,    .no-js .pt-page {        visibility: visible;        z-index: 1;    }
  </style>
  <script>
    //当前页面移动完毕
    var endCurrPage = false;    //后续页面移动完毕
    var endNextPage = false;    //入场动画和出场动画
    var outClass = '';    var inClass = '';    var animEndEventNames = {            'WebkitAnimation' : 'webkitAnimationEnd',            'OAnimation' : 'oAnimationEnd',            'msAnimation' : 'MSAnimationEnd',            'animation' : 'animationend'
        },        // animation end event name
        animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ]

    $(function() {
        //保存各个View的默认class
        $(".pt-page").each( function() {
            var $page = $( this );
            $page.data( 'originalClassList', $page.attr( 'class' ) );
        } );        //设置默认页面
        $(".pt-page").eq(0).addClass( 'pt-page-current' );        //添加动画样式单选框
        var str = "";        for(var i=1;i<=67;i++){
            str += '<input type="radio" name="myAnimation" value="'+i+'" />效果'+i;            if(i%7==0){
                str += "<br/>";
            }
        }
        $("#radiosDiv").html(str);
    });    //View切换
    function changeView(newView){
        //设置动画效果   
        var animationType = $('input:radio[name="myAnimation"]:checked:eq(0)').val();
        getAnimationClass(parseInt(animationType));

        $currPage = $(".pt-page-current").eq(0);
        $nextPage = $(newView);        //清除原来添加的动画,层级等样式
        //(正常动画结束时会自动清除,这样做防止用户在动画结束前就点击切换其他的)
        $(".pt-page").each( function() {
            $(this).attr( 'class', $(this).data( 'originalClassList' ) );
        });
        $currPage.addClass("pt-page-current");
        $nextPage.addClass("pt-page-current");        //如果就是当页则不切换
        if($currPage.attr("id") == $nextPage.attr("id")){            return;
        }        //新页面入场
        $currPage.addClass(outClass).on( animEndEventName, function() {
            $currPage.off( animEndEventName );
            endCurrPage = true;            if( endNextPage ) {
                onEndAnimation( $currPage, $nextPage );
            }
        } );        //旧页面出场
        $nextPage.addClass(inClass).on( animEndEventName, function() {
            $nextPage.off( animEndEventName );
            endNextPage = true;            if( endCurrPage ) {
                onEndAnimation( $currPage, $nextPage );
            }
        } );
    }    //所有动画都结束后
    function onEndAnimation( $outpage, $inpage ) {
        endCurrPage = false;
        endNextPage = false;        //resetPage( $outpage, $inpage );
        //isAnimating = false;
        $outpage.attr( 'class', $outpage.data( 'originalClassList' ) );
        $inpage.attr( 'class', $inpage.data( 'originalClassList' ) + ' pt-page-current' );
    }  

    function getAnimationClass(animationType) {
        switch(animationType) {            case 1:    
                outClass = 'pt-page-moveToLeft';
                inClass = 'pt-page-moveFromRight';                break;            case 2:
                outClass = 'pt-page-moveToRight';
                inClass = 'pt-page-moveFromLeft';                break;            case 3:
                outClass = 'pt-page-moveToTop';
                inClass = 'pt-page-moveFromBottom';                break;            case 4:
                outClass = 'pt-page-moveToBottom';
                inClass = 'pt-page-moveFromTop';                break;            case 5:
                outClass = 'pt-page-fade';
                inClass = 'pt-page-moveFromRight pt-page-ontop';                break;            case 6:
                outClass = 'pt-page-fade';
                inClass = 'pt-page-moveFromLeft pt-page-ontop';                break;            case 7:
                outClass = 'pt-page-fade';
                inClass = 'pt-page-moveFromBottom pt-page-ontop';                break;            case 8:
                outClass = 'pt-page-fade';
                inClass = 'pt-page-moveFromTop pt-page-ontop';                break;            case 9:
                outClass = 'pt-page-moveToLeftFade';
                inClass = 'pt-page-moveFromRightFade';                break;            case 10:
                outClass = 'pt-page-moveToRightFade';
                inClass = 'pt-page-moveFromLeftFade';                break;            case 11:
                outClass = 'pt-page-moveToTopFade';
                inClass = 'pt-page-moveFromBottomFade';                break;            case 12:
                outClass = 'pt-page-moveToBottomFade';
                inClass = 'pt-page-moveFromTopFade';                break;            case 13:
                outClass = 'pt-page-moveToLeftEasing pt-page-ontop';
                inClass = 'pt-page-moveFromRight';                break;            case 14:
                outClass = 'pt-page-moveToRightEasing pt-page-ontop';
                inClass = 'pt-page-moveFromLeft';                break;            case 15:
                outClass = 'pt-page-moveToTopEasing pt-page-ontop';
                inClass = 'pt-page-moveFromBottom';                break;            case 16:
                outClass = 'pt-page-moveToBottomEasing pt-page-ontop';
                inClass = 'pt-page-moveFromTop';                break;            case 17:
                outClass = 'pt-page-scaleDown';
                inClass = 'pt-page-moveFromRight pt-page-ontop';                break;            case 18:
                outClass = 'pt-page-scaleDown';
                inClass = 'pt-page-moveFromLeft pt-page-ontop';                break;            case 19:
                outClass = 'pt-page-scaleDown';
                inClass = 'pt-page-moveFromBottom pt-page-ontop';                break;            case 20:
                outClass = 'pt-page-scaleDown';
                inClass = 'pt-page-moveFromTop pt-page-ontop';                break;            case 21:
                outClass = 'pt-page-scaleDown';
                inClass = 'pt-page-scaleUpDown pt-page-delay300';                break;            case 22:
                outClass = 'pt-page-scaleDownUp';
                inClass = 'pt-page-scaleUp pt-page-delay300';                break;            case 23:
                outClass = 'pt-page-moveToLeft pt-page-ontop';
                inClass = 'pt-page-scaleUp';                break;            case 24:
                outClass = 'pt-page-moveToRight pt-page-ontop';
                inClass = 'pt-page-scaleUp';                break;            case 25:
                outClass = 'pt-page-moveToTop pt-page-ontop';
                inClass = 'pt-page-scaleUp';                break;            case 26:
                outClass = 'pt-page-moveToBottom pt-page-ontop';
                inClass = 'pt-page-scaleUp';                break;            case 27:
                outClass = 'pt-page-scaleDownCenter';
                inClass = 'pt-page-scaleUpCenter pt-page-delay400';                break;            case 28:
                outClass = 'pt-page-rotateRightSideFirst';
                inClass = 'pt-page-moveFromRight pt-page-delay200 pt-page-ontop';                break;            case 29:
                outClass = 'pt-page-rotateLeftSideFirst';
                inClass = 'pt-page-moveFromLeft pt-page-delay200 pt-page-ontop';                break;            case 30:
                outClass = 'pt-page-rotateTopSideFirst';
                inClass = 'pt-page-moveFromTop pt-page-delay200 pt-page-ontop';                break;            case 31:
                outClass = 'pt-page-rotateBottomSideFirst';
                inClass = 'pt-page-moveFromBottom pt-page-delay200 pt-page-ontop';                break;            case 32:
                outClass = 'pt-page-flipOutRight';
                inClass = 'pt-page-flipInLeft pt-page-delay500';                break;            case 33:
                outClass = 'pt-page-flipOutLeft';
                inClass = 'pt-page-flipInRight pt-page-delay500';                break;            case 34:
                outClass = 'pt-page-flipOutTop';
                inClass = 'pt-page-flipInBottom pt-page-delay500';                break;            case 35:
                outClass = 'pt-page-flipOutBottom';
                inClass = 'pt-page-flipInTop pt-page-delay500';                break;            case 36:
                outClass = 'pt-page-rotateFall pt-page-ontop';
                inClass = 'pt-page-scaleUp';                break;            case 37:
                outClass = 'pt-page-rotateOutNewspaper';
                inClass = 'pt-page-rotateInNewspaper pt-page-delay500';                break;            case 38:
                outClass = 'pt-page-rotatePushLeft';
                inClass = 'pt-page-moveFromRight';                break;            case 39:
                outClass = 'pt-page-rotatePushRight';
                inClass = 'pt-page-moveFromLeft';                break;            case 40:
                outClass = 'pt-page-rotatePushTop';
                inClass = 'pt-page-moveFromBottom';                break;            case 41:
                outClass = 'pt-page-rotatePushBottom';
                inClass = 'pt-page-moveFromTop';                break;            case 42:
                outClass = 'pt-page-rotatePushLeft';
                inClass = 'pt-page-rotatePullRight pt-page-delay180';                break;            case 43:
                outClass = 'pt-page-rotatePushRight';
                inClass = 'pt-page-rotatePullLeft pt-page-delay180';                break;            case 44:
                outClass = 'pt-page-rotatePushTop';
                inClass = 'pt-page-rotatePullBottom pt-page-delay180';                break;            case 45:
                outClass = 'pt-page-rotatePushBottom';
                inClass = 'pt-page-rotatePullTop pt-page-delay180';                break;            case 46:
                outClass = 'pt-page-rotateFoldLeft';
                inClass = 'pt-page-moveFromRightFade';                break;            case 47:
                outClass = 'pt-page-rotateFoldRight';
                inClass = 'pt-page-moveFromLeftFade';                break;            case 48:
                outClass = 'pt-page-rotateFoldTop';
                inClass = 'pt-page-moveFromBottomFade';                break;            case 49:
                outClass = 'pt-page-rotateFoldBottom';
                inClass = 'pt-page-moveFromTopFade';                break;            case 50:
                outClass = 'pt-page-moveToRightFade';
                inClass = 'pt-page-rotateUnfoldLeft';                break;            case 51:
                outClass = 'pt-page-moveToLeftFade';
                inClass = 'pt-page-rotateUnfoldRight';                break;            case 52:
                outClass = 'pt-page-moveToBottomFade';
                inClass = 'pt-page-rotateUnfoldTop';                break;            case 53:
                outClass = 'pt-page-moveToTopFade';
                inClass = 'pt-page-rotateUnfoldBottom';                break;            case 54:
                outClass = 'pt-page-rotateRoomLeftOut pt-page-ontop';
                inClass = 'pt-page-rotateRoomLeftIn';                break;            case 55:
                outClass = 'pt-page-rotateRoomRightOut pt-page-ontop';
                inClass = 'pt-page-rotateRoomRightIn';                break;            case 56:
                outClass = 'pt-page-rotateRoomTopOut pt-page-ontop';
                inClass = 'pt-page-rotateRoomTopIn';                break;            case 57:
                outClass = 'pt-page-rotateRoomBottomOut pt-page-ontop';
                inClass = 'pt-page-rotateRoomBottomIn';                break;            case 58:
                outClass = 'pt-page-rotateCubeLeftOut pt-page-ontop';
                inClass = 'pt-page-rotateCubeLeftIn';                break;            case 59:
                outClass = 'pt-page-rotateCubeRightOut pt-page-ontop';
                inClass = 'pt-page-rotateCubeRightIn';                break;            case 60:
                outClass = 'pt-page-rotateCubeTopOut pt-page-ontop';
                inClass = 'pt-page-rotateCubeTopIn';                break;            case 61:
                outClass = 'pt-page-rotateCubeBottomOut pt-page-ontop';
                inClass = 'pt-page-rotateCubeBottomIn';                break;            case 62:
                outClass = 'pt-page-rotateCarouselLeftOut pt-page-ontop';
                inClass = 'pt-page-rotateCarouselLeftIn';                break;            case 63:
                outClass = 'pt-page-rotateCarouselRightOut pt-page-ontop';
                inClass = 'pt-page-rotateCarouselRightIn';                break;            case 64:
                outClass = 'pt-page-rotateCarouselTopOut pt-page-ontop';
                inClass = 'pt-page-rotateCarouselTopIn';                break;            case 65:
                outClass = 'pt-page-rotateCarouselBottomOut pt-page-ontop';
                inClass = 'pt-page-rotateCarouselBottomIn';                break;            case 66:
                outClass = 'pt-page-rotateSidesOut';
                inClass = 'pt-page-rotateSidesIn pt-page-delay200';                break;            case 67:
                outClass = 'pt-page-rotateSlideOut';
                inClass = 'pt-page-rotateSlideIn';                break;
        }
    }  </script></head><body>
    <div id="viewsWrapper">
        <div id="view1" class="pt-page">这个是页面1......</div>
        <div id="view2" class="pt-page">这个是页面2......</div>
        <div id="view3" class="pt-page">这个是页面3......</div>
        <div id="view4" class="pt-page">这个是页面4......</div>
    </div>
    <br/>
    <input type="button" onclick="changeView('#view1')" value="切换页面1"/>
    <input type="button" onclick="changeView('#view2')" value="切换页面2"/>
    <input type="button" onclick="changeView('#view3')" value="切换页面3"/>
    <input type="button" onclick="changeView('#view4')" value="切换页面4"/>
    <br/>
    <br/>
    <div id="radiosDiv"></div></body></html>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439

源码下载:场景切换.zip

原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_829.html


  • 2018-03-07 14:35:32

    centos7下yum安装ffmpeg

    安装EPEL Release,因为安装需要使用其他的repo源,所以需要EPEL支持 yum install -y epel-release

  • 2018-03-08 09:44:12

    前端性能监控:window.performance

    Web Performance API允许网页访问某些函数来测量网页和Web应用程序的性能,包括 Navigation Timing API和高分辨率时间数据。

  • 2018-03-08 09:44:15

    前端性能监控:window.performance

    Web Performance API允许网页访问某些函数来测量网页和Web应用程序的性能,包括 Navigation Timing API和高分辨率时间数据。

  • 2018-03-08 09:47:14

    ES6,Array.fill()函数的用法

    ES6为Array增加了fill()函数,使用制定的元素填充数组,其实就是用默认内容初始化数组。

  • 2018-03-08 09:53:39

    document.readyState

    一个document 的 Document.readyState 属性描述了文档的加载状态。

  • 2018-03-09 02:09:23

    ArrayBuffer:类型化数组

    ArrayBuffer对象、TypedArray对象、DataView对象是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格,ES6将它们纳入了ECMAScript规格,并且增加了新的方法。

  • 2018-03-09 11:45:11

    SQL SELECT DISTINCT 语句

    如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句: