• HTML5


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4   <meta charset="utf-8">
      5   <title>HTML5-页面切换动画</title>
      6   <link href="animations.css" rel="stylesheet">
      7   <script src="modernizr.custom.js"></script>
      8   <script src="jquery-1.8.0.min.js"></script>
      9   <style>
     10     #viewsWrapper {
     11         top:0px;
     12         left:0px;
     13         width:300px;
     14         height:200px;
     15         position:relative;
     16         overflow: hidden;
     17     }
     18 
     19     #view1 {
     20         background:#dddd00;
     21     }
     22 
     23     #view2 {
     24         background:#ff00ff;
     25     }
     26 
     27     #view3 {
     28         background:#cc00ff;
     29     }
     30 
     31     #view4 {
     32         background:#00cccc;
     33     }
     34 
     35     .pt-page {
     36         width: 100%;
     37         height: 100%;
     38         position: absolute;
     39         top: 0;
     40         left: 0;
     41         visibility: hidden;
     42         overflow: hidden;
     43         -webkit-backface-visibility: hidden;
     44         -moz-backface-visibility: hidden;
     45         backface-visibility: hidden;
     46         -webkit-transform: translate3d(0, 0, 0);
     47         -moz-transform: translate3d(0, 0, 0);
     48         transform: translate3d(0, 0, 0);
     49         -webkit-transform-style: preserve-3d;
     50         -moz-transform-style: preserve-3d;
     51         transform-style: preserve-3d;
     52     }
     53     .pt-page-current,
     54     .no-js .pt-page {
     55         visibility: visible;
     56         z-index: 1;
     57     }
     58   </style>
     59   <script>
     60     //当前页面移动完毕
     61     var endCurrPage = false;
     62     //后续页面移动完毕
     63     var endNextPage = false;
     64     //入场动画和出场动画
     65     var outClass = '';
     66     var inClass = '';
     67 
     68     var animEndEventNames = {
     69             'WebkitAnimation' : 'webkitAnimationEnd',
     70             'OAnimation' : 'oAnimationEnd',
     71             'msAnimation' : 'MSAnimationEnd',
     72             'animation' : 'animationend'
     73         },
     74         // animation end event name
     75         animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ]
     76 
     77     $(function() {
     78         //保存各个View的默认class
     79         $(".pt-page").each( function() {
     80             var $page = $( this );
     81             $page.data( 'originalClassList', $page.attr( 'class' ) );
     82         } );
     83         //设置默认页面
     84         $(".pt-page").eq(0).addClass( 'pt-page-current' );
     85 
     86         //添加动画样式单选框
     87         var str = "";
     88         for(var i=1;i<=67;i++){
     89             str += '<input type="radio" name="myAnimation" value="'+i+'" />效果'+i;
     90             if(i%7==0){
     91                 str += "<br/>";
     92             }
     93         }
     94         $("#radiosDiv").html(str);
     95     });
     96 
     97     //View切换
     98     function changeView(newView){
     99         //设置动画效果   
    100         var animationType = $('input:radio[name="myAnimation"]:checked:eq(0)').val();
    101         getAnimationClass(parseInt(animationType));
    102 
    103         $currPage = $(".pt-page-current").eq(0);
    104         $nextPage = $(newView);
    105 
    106         //清除原来添加的动画,层级等样式
    107         //(正常动画结束时会自动清除,这样做防止用户在动画结束前就点击切换其他的)
    108         $(".pt-page").each( function() {
    109             $(this).attr( 'class', $(this).data( 'originalClassList' ) );
    110         });
    111         $currPage.addClass("pt-page-current");
    112         $nextPage.addClass("pt-page-current");
    113 
    114 
    115         //如果就是当页则不切换
    116         if($currPage.attr("id") == $nextPage.attr("id")){
    117             return;
    118         }
    119 
    120         //新页面入场
    121         $currPage.addClass(outClass).on( animEndEventName, function() {
    122             $currPage.off( animEndEventName );
    123             endCurrPage = true;
    124             if( endNextPage ) {
    125                 onEndAnimation( $currPage, $nextPage );
    126             }
    127         } );
    128 
    129         //旧页面出场
    130         $nextPage.addClass(inClass).on( animEndEventName, function() {
    131             $nextPage.off( animEndEventName );
    132             endNextPage = true;
    133             if( endCurrPage ) {
    134                 onEndAnimation( $currPage, $nextPage );
    135             }
    136         } );
    137     }
    138 
    139     //所有动画都结束后
    140     function onEndAnimation( $outpage, $inpage ) {
    141         endCurrPage = false;
    142         endNextPage = false;
    143         //resetPage( $outpage, $inpage );
    144         //isAnimating = false;
    145         $outpage.attr( 'class', $outpage.data( 'originalClassList' ) );
    146         $inpage.attr( 'class', $inpage.data( 'originalClassList' ) + ' pt-page-current' );
    147     }  
    148 
    149     function getAnimationClass(animationType) {
    150         switch(animationType) {
    151             case 1:    
    152                 outClass = 'pt-page-moveToLeft';
    153                 inClass = 'pt-page-moveFromRight';
    154                 break;
    155             case 2:
    156                 outClass = 'pt-page-moveToRight';
    157                 inClass = 'pt-page-moveFromLeft';
    158                 break;
    159             case 3:
    160                 outClass = 'pt-page-moveToTop';
    161                 inClass = 'pt-page-moveFromBottom';
    162                 break;
    163             case 4:
    164                 outClass = 'pt-page-moveToBottom';
    165                 inClass = 'pt-page-moveFromTop';
    166                 break;
    167             case 5:
    168                 outClass = 'pt-page-fade';
    169                 inClass = 'pt-page-moveFromRight pt-page-ontop';
    170                 break;
    171             case 6:
    172                 outClass = 'pt-page-fade';
    173                 inClass = 'pt-page-moveFromLeft pt-page-ontop';
    174                 break;
    175             case 7:
    176                 outClass = 'pt-page-fade';
    177                 inClass = 'pt-page-moveFromBottom pt-page-ontop';
    178                 break;
    179             case 8:
    180                 outClass = 'pt-page-fade';
    181                 inClass = 'pt-page-moveFromTop pt-page-ontop';
    182                 break;
    183             case 9:
    184                 outClass = 'pt-page-moveToLeftFade';
    185                 inClass = 'pt-page-moveFromRightFade';
    186                 break;
    187             case 10:
    188                 outClass = 'pt-page-moveToRightFade';
    189                 inClass = 'pt-page-moveFromLeftFade';
    190                 break;
    191             case 11:
    192                 outClass = 'pt-page-moveToTopFade';
    193                 inClass = 'pt-page-moveFromBottomFade';
    194                 break;
    195             case 12:
    196                 outClass = 'pt-page-moveToBottomFade';
    197                 inClass = 'pt-page-moveFromTopFade';
    198                 break;
    199             case 13:
    200                 outClass = 'pt-page-moveToLeftEasing pt-page-ontop';
    201                 inClass = 'pt-page-moveFromRight';
    202                 break;
    203             case 14:
    204                 outClass = 'pt-page-moveToRightEasing pt-page-ontop';
    205                 inClass = 'pt-page-moveFromLeft';
    206                 break;
    207             case 15:
    208                 outClass = 'pt-page-moveToTopEasing pt-page-ontop';
    209                 inClass = 'pt-page-moveFromBottom';
    210                 break;
    211             case 16:
    212                 outClass = 'pt-page-moveToBottomEasing pt-page-ontop';
    213                 inClass = 'pt-page-moveFromTop';
    214                 break;
    215             case 17:
    216                 outClass = 'pt-page-scaleDown';
    217                 inClass = 'pt-page-moveFromRight pt-page-ontop';
    218                 break;
    219             case 18:
    220                 outClass = 'pt-page-scaleDown';
    221                 inClass = 'pt-page-moveFromLeft pt-page-ontop';
    222                 break;
    223             case 19:
    224                 outClass = 'pt-page-scaleDown';
    225                 inClass = 'pt-page-moveFromBottom pt-page-ontop';
    226                 break;
    227             case 20:
    228                 outClass = 'pt-page-scaleDown';
    229                 inClass = 'pt-page-moveFromTop pt-page-ontop';
    230                 break;
    231             case 21:
    232                 outClass = 'pt-page-scaleDown';
    233                 inClass = 'pt-page-scaleUpDown pt-page-delay300';
    234                 break;
    235             case 22:
    236                 outClass = 'pt-page-scaleDownUp';
    237                 inClass = 'pt-page-scaleUp pt-page-delay300';
    238                 break;
    239             case 23:
    240                 outClass = 'pt-page-moveToLeft pt-page-ontop';
    241                 inClass = 'pt-page-scaleUp';
    242                 break;
    243             case 24:
    244                 outClass = 'pt-page-moveToRight pt-page-ontop';
    245                 inClass = 'pt-page-scaleUp';
    246                 break;
    247             case 25:
    248                 outClass = 'pt-page-moveToTop pt-page-ontop';
    249                 inClass = 'pt-page-scaleUp';
    250                 break;
    251             case 26:
    252                 outClass = 'pt-page-moveToBottom pt-page-ontop';
    253                 inClass = 'pt-page-scaleUp';
    254                 break;
    255             case 27:
    256                 outClass = 'pt-page-scaleDownCenter';
    257                 inClass = 'pt-page-scaleUpCenter pt-page-delay400';
    258                 break;
    259             case 28:
    260                 outClass = 'pt-page-rotateRightSideFirst';
    261                 inClass = 'pt-page-moveFromRight pt-page-delay200 pt-page-ontop';
    262                 break;
    263             case 29:
    264                 outClass = 'pt-page-rotateLeftSideFirst';
    265                 inClass = 'pt-page-moveFromLeft pt-page-delay200 pt-page-ontop';
    266                 break;
    267             case 30:
    268                 outClass = 'pt-page-rotateTopSideFirst';
    269                 inClass = 'pt-page-moveFromTop pt-page-delay200 pt-page-ontop';
    270                 break;
    271             case 31:
    272                 outClass = 'pt-page-rotateBottomSideFirst';
    273                 inClass = 'pt-page-moveFromBottom pt-page-delay200 pt-page-ontop';
    274                 break;
    275             case 32:
    276                 outClass = 'pt-page-flipOutRight';
    277                 inClass = 'pt-page-flipInLeft pt-page-delay500';
    278                 break;
    279             case 33:
    280                 outClass = 'pt-page-flipOutLeft';
    281                 inClass = 'pt-page-flipInRight pt-page-delay500';
    282                 break;
    283             case 34:
    284                 outClass = 'pt-page-flipOutTop';
    285                 inClass = 'pt-page-flipInBottom pt-page-delay500';
    286                 break;
    287             case 35:
    288                 outClass = 'pt-page-flipOutBottom';
    289                 inClass = 'pt-page-flipInTop pt-page-delay500';
    290                 break;
    291             case 36:
    292                 outClass = 'pt-page-rotateFall pt-page-ontop';
    293                 inClass = 'pt-page-scaleUp';
    294                 break;
    295             case 37:
    296                 outClass = 'pt-page-rotateOutNewspaper';
    297                 inClass = 'pt-page-rotateInNewspaper pt-page-delay500';
    298                 break;
    299             case 38:
    300                 outClass = 'pt-page-rotatePushLeft';
    301                 inClass = 'pt-page-moveFromRight';
    302                 break;
    303             case 39:
    304                 outClass = 'pt-page-rotatePushRight';
    305                 inClass = 'pt-page-moveFromLeft';
    306                 break;
    307             case 40:
    308                 outClass = 'pt-page-rotatePushTop';
    309                 inClass = 'pt-page-moveFromBottom';
    310                 break;
    311             case 41:
    312                 outClass = 'pt-page-rotatePushBottom';
    313                 inClass = 'pt-page-moveFromTop';
    314                 break;
    315             case 42:
    316                 outClass = 'pt-page-rotatePushLeft';
    317                 inClass = 'pt-page-rotatePullRight pt-page-delay180';
    318                 break;
    319             case 43:
    320                 outClass = 'pt-page-rotatePushRight';
    321                 inClass = 'pt-page-rotatePullLeft pt-page-delay180';
    322                 break;
    323             case 44:
    324                 outClass = 'pt-page-rotatePushTop';
    325                 inClass = 'pt-page-rotatePullBottom pt-page-delay180';
    326                 break;
    327             case 45:
    328                 outClass = 'pt-page-rotatePushBottom';
    329                 inClass = 'pt-page-rotatePullTop pt-page-delay180';
    330                 break;
    331             case 46:
    332                 outClass = 'pt-page-rotateFoldLeft';
    333                 inClass = 'pt-page-moveFromRightFade';
    334                 break;
    335             case 47:
    336                 outClass = 'pt-page-rotateFoldRight';
    337                 inClass = 'pt-page-moveFromLeftFade';
    338                 break;
    339             case 48:
    340                 outClass = 'pt-page-rotateFoldTop';
    341                 inClass = 'pt-page-moveFromBottomFade';
    342                 break;
    343             case 49:
    344                 outClass = 'pt-page-rotateFoldBottom';
    345                 inClass = 'pt-page-moveFromTopFade';
    346                 break;
    347             case 50:
    348                 outClass = 'pt-page-moveToRightFade';
    349                 inClass = 'pt-page-rotateUnfoldLeft';
    350                 break;
    351             case 51:
    352                 outClass = 'pt-page-moveToLeftFade';
    353                 inClass = 'pt-page-rotateUnfoldRight';
    354                 break;
    355             case 52:
    356                 outClass = 'pt-page-moveToBottomFade';
    357                 inClass = 'pt-page-rotateUnfoldTop';
    358                 break;
    359             case 53:
    360                 outClass = 'pt-page-moveToTopFade';
    361                 inClass = 'pt-page-rotateUnfoldBottom';
    362                 break;
    363             case 54:
    364                 outClass = 'pt-page-rotateRoomLeftOut pt-page-ontop';
    365                 inClass = 'pt-page-rotateRoomLeftIn';
    366                 break;
    367             case 55:
    368                 outClass = 'pt-page-rotateRoomRightOut pt-page-ontop';
    369                 inClass = 'pt-page-rotateRoomRightIn';
    370                 break;
    371             case 56:
    372                 outClass = 'pt-page-rotateRoomTopOut pt-page-ontop';
    373                 inClass = 'pt-page-rotateRoomTopIn';
    374                 break;
    375             case 57:
    376                 outClass = 'pt-page-rotateRoomBottomOut pt-page-ontop';
    377                 inClass = 'pt-page-rotateRoomBottomIn';
    378                 break;
    379             case 58:
    380                 outClass = 'pt-page-rotateCubeLeftOut pt-page-ontop';
    381                 inClass = 'pt-page-rotateCubeLeftIn';
    382                 break;
    383             case 59:
    384                 outClass = 'pt-page-rotateCubeRightOut pt-page-ontop';
    385                 inClass = 'pt-page-rotateCubeRightIn';
    386                 break;
    387             case 60:
    388                 outClass = 'pt-page-rotateCubeTopOut pt-page-ontop';
    389                 inClass = 'pt-page-rotateCubeTopIn';
    390                 break;
    391             case 61:
    392                 outClass = 'pt-page-rotateCubeBottomOut pt-page-ontop';
    393                 inClass = 'pt-page-rotateCubeBottomIn';
    394                 break;
    395             case 62:
    396                 outClass = 'pt-page-rotateCarouselLeftOut pt-page-ontop';
    397                 inClass = 'pt-page-rotateCarouselLeftIn';
    398                 break;
    399             case 63:
    400                 outClass = 'pt-page-rotateCarouselRightOut pt-page-ontop';
    401                 inClass = 'pt-page-rotateCarouselRightIn';
    402                 break;
    403             case 64:
    404                 outClass = 'pt-page-rotateCarouselTopOut pt-page-ontop';
    405                 inClass = 'pt-page-rotateCarouselTopIn';
    406                 break;
    407             case 65:
    408                 outClass = 'pt-page-rotateCarouselBottomOut pt-page-ontop';
    409                 inClass = 'pt-page-rotateCarouselBottomIn';
    410                 break;
    411             case 66:
    412                 outClass = 'pt-page-rotateSidesOut';
    413                 inClass = 'pt-page-rotateSidesIn pt-page-delay200';
    414                 break;
    415             case 67:
    416                 outClass = 'pt-page-rotateSlideOut';
    417                 inClass = 'pt-page-rotateSlideIn';
    418                 break;
    419         }
    420     }
    421   </script>
    422 </head>
    423 <body>
    424     <div id="viewsWrapper">
    425         <div id="view1" class="pt-page">这个是页面1......</div>
    426         <div id="view2" class="pt-page">这个是页面2......</div>
    427         <div id="view3" class="pt-page">这个是页面3......</div>
    428         <div id="view4" class="pt-page">这个是页面4......</div>
    429     </div>
    430     <br/>
    431     <input type="button" onclick="changeView('#view1')" value="切换页面1"/>
    432     <input type="button" onclick="changeView('#view2')" value="切换页面2"/>
    433     <input type="button" onclick="changeView('#view3')" value="切换页面3"/>
    434     <input type="button" onclick="changeView('#view4')" value="切换页面4"/>
    435     <br/>
    436     <br/>
    437     <div id="radiosDiv"></div>
    438 </body>
    439 </html>
  • 相关阅读:
    java web 开发入门
    程序优质网站
    为什么要放弃ssh框架
    JDK核心源码(2)
    Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令
    快照COW
    磁盘检测SMART工具
    python学习-3.一些常用模块用法
    python 学习2:生成器,迭代器,装饰器
    关于对SwfUpload的改造
  • 原文地址:https://www.cnblogs.com/zijue/p/9909919.html
Copyright © 2020-2023  润新知