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

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


  • 2019-09-03 23:09:17

    Linux下静态库(.a)和动态库(.so) 的生成与使用以及区别

    静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

  • 2019-09-03 23:19:12

    ./configure 的配置和用法

    Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。

  • 2019-09-04 16:24:17

    Ubuntu apt-get更换为阿里源

    ​进入阿里巴巴开源镜像页面,找到ubuntu,点击后面的帮助,可以看到类似下面的介绍,加入就好。切记下面的第三步。

  • 2019-09-04 16:32:56

    Ubuntu tar 解压缩命令详解

    tar 解压缩命令详解,这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

  • 2019-09-04 16:50:35

    CMake入门笔记

    Make是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

  • 2019-09-05 20:51:15

    在Android上使用FFmpeg压缩视频

    libavcodec-提供了更加全面的编解码实现的合集 libavformat-提供了更加全面的音视频容器格式的封装和解析以及所支持的协议 libavutil-提供了一些公共函数 libavfilter-提供音视频的过滤器,如视频加水印、音频变声等 libavdevice-提供支持众多设备数据的输入与输出,如读取摄像头数据、屏幕录制 libswresample,libavresample-提供音频的重采样工具 libswscale-提供对视频图像进行色彩转换、缩放以及像素格式转换,如图像的YUV转换 libpostproc-多媒体后处理器