zoukankan      html  css  js  c++  java
  • 文字聚合动画效果。

    预览效果:http://sandbox.runjs.cn/show/k6zvbrus

    思路:

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <style>
     7         *{
     8             margin:0;
     9             padding:0;
    10         }
    11         body{
    12             background-color:#000;
    13         }
    14         .box{
    15             width:500px;
    16             height:630px;
    17             margin: 0 auto 300px;
    18         }
    19         .container{
    20             width:230px;
    21             height:599px;
    22             position: relative;
    23             margin:50px auto;
    24         }
    25         .container div{
    26             background:url(2_1.png) no-repeat;
    27             position:absolute;
    28             background-size: 230px auto;
    29         }
    30         button{
    31             padding: 10px 5px;
    32             float:left;
    33         }
    34         .set div{
    35             opacity: 1!important;
    36             -webkit-transform:perspective(800px) translate3d(0px,0px,0px) rotate(0deg) scale(1)!important;
    37         }
    38     </style>
    39 </head>
    40 <body>
    41     <div class="box">
    42         <button>重新加载</button>
    43         <div class="container"></div>
    44     </div>
    45     <script type="text/javascript">
    46     window.addEventListener('load',function(){
    47         ;(function(){
    48             function init(){
    49                 var box = document.getElementsByClassName('container'),c=5,r=10;
    50                 var w = box[0].clientWidth/c,h=box[0].clientHeight/r;
    51                 for (var i = 0; i < r; i++) {
    52                     for (var j = 0; j < c; j++) {
    53                         var _div = document.createElement('div');
    54                         var _left = j*w, _top = i*h;
    55                         _div.style.cssText = ''+w+'px;height:'+h+'px;opacity:0;background-position:'+(-_left)+'px '+(-_top)+'px;top:'+_top+'px;left:'+_left+'px;'
    56                         _div.style.transition = 'all '+Random(1,1.8)+'s ease';
    57                         _div.style.transform = 'perspective(800px) translate3d('+Random(-200,200)
    58                         +'px,'+Random(-200,200)+'px,300px) rotate('+Random(-90,90)+'deg) scale('
    59                         +Random(0,2)+')';
    60                         box[0].appendChild(_div);
    61                     };
    62                 };
    63                 setTimeout(function(){
    64                     box[0].classList.add('set')
    65                 },200);
    66                 function Random(start,end){
    67                 return Math.random()*(end-start)+start;
    68                 }
    69             }
    70             init();
    71             //设置自定义标记判断变量
    72             var flag = true;
    73             //点击button运行的函数
    74             document.querySelector('button').onclick = function(){
    75             //此时flag为true
    76             if(flag){
    77             //移除set类,目的:取消important属性
    78             document.querySelector('.container').classList.remove('set');
    79             //1200ms后执行下面的函数
    80             setTimeout(function(){
    81                 //把初始化的div清除,防止多次叠加
    82                 document.querySelector('.container').innerHTML = '';
    83                 //添加初始化函数,即给他创建div和添加各种属性
    84                 init();
    85                 //把flag设置为true,则在执行完之后设置为flag=true.
    86                 flag = true;
    87             },1200);
    88             //防止在1200ms这段时间内点击进入函数。此时先执行这句,1200ms后执行setTimeout里面的函数
    89             flag = false;
    90         };
    91     };
    92         })();
    93     })
    94     </script>
    95 </body>
    96 </html>

    改变3d的方式:

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <style>
     7         *{
     8             margin:0;
     9             padding:0;
    10         }
    11         body{
    12             background-color:#000;
    13         }
    14         .box{
    15             width:500px;
    16             height:630px;
    17             margin: 0 auto 300px;
    18         }
    19         .container{
    20             width:230px;
    21             height:599px;
    22             position: relative;
    23             margin:50px auto;
    24             perspective:200px;  //改变之后3d效果更加明显,由于在这个容器里面有很多的div.
    25         }
    26         .container div{
    27             background:url(images/2_1.png) no-repeat;
    28             position:absolute;
    29             background-size: 230px auto;
    30 
    31         }
    32         button{
    33             padding: 10px 5px;
    34             float:left;
    35         }
    36         .set div{
    37             opacity: 1!important;
    38             -webkit-transform:translate3d(0px,0px,0px) rotate(0deg) scale(1)!important;
    39         }
    40     </style>
    41 </head>
    42 <body>
    43     <div class="box">
    44         <button>重新加载</button>
    45         <div class="container"></div>
    46     </div>
    47     <script type="text/javascript">
    48     window.addEventListener('load',function(){
    49         ;(function(){
    50             function init(){
    51                 var box = document.getElementsByClassName('container'),c=5,r=10;
    52                 var w = box[0].clientWidth/c,h=box[0].clientHeight/r;
    53                 for (var i = 0; i < r; i++) {
    54                     for (var j = 0; j < c; j++) {
    55                         var _div = document.createElement('div');
    56                         var _left = j*w, _top = i*h;
    57                         _div.style.cssText = ''+w+'px;height:'+h+'px;opacity:0;background-position:'+(-_left)+'px '+(-_top)+'px;top:'+_top+'px;left:'+_left+'px;'
    58                         _div.style.transition = 'all '+Random(1,1.8)+'s ease';
    59                         _div.style.transform = 'translate3d('+Random(-200,200)
    60                         +'px,'+Random(-200,200)+'px,300px) rotate('+Random(-90,90)+'deg) scale('
    61                         +Random(0,2)+')';
    62                         box[0].appendChild(_div);
    63                     };
    64                 };
    65                 setTimeout(function(){
    66                     box[0].classList.add('set')
    67                 },200);
    68                 function Random(start,end){
    69                 return Math.random()*(end-start)+start;
    70                 }
    71             }
    72             init();
    73             //设置自定义标记判断变量
    74             var flag = true;
    75             //点击button运行的函数
    76             document.querySelector('button').onclick = function(){
    77             //此时flag为true
    78             if(flag){
    79             //移除set类,目的:取消important属性
    80             document.querySelector('.container').classList.remove('set');
    81             //1200ms后执行下面的函数
    82             setTimeout(function(){
    83                 //把初始化的div清除,防止多次叠加
    84                 document.querySelector('.container').innerHTML = '';
    85                 //添加初始化函数,即给他创建div和添加各种属性
    86                 init();
    87                 //把flag设置为true,则在执行完之后设置为flag=true.
    88                 flag = true;
    89             },1200);
    90             //防止在1200ms这段时间内点击进入函数。此时先执行这句,1200ms后执行setTimeout里面的函数
    91             flag = false;
    92         };
    93     };
    94         })();
    95     })
    96     </script>
    97 </body>
    98 </html>
  • 相关阅读:
    UVa532 Dungeon Master 三维迷宫
    6.4.2 走迷宫
    UVA 439 Knight Moves
    UVa784 Maze Exploration
    UVa657 The die is cast
    UVa572 Oil Deposits DFS求连通块
    UVa10562 Undraw the Trees
    UVa839 Not so Mobile
    327
    UVa699 The Falling Leaves
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5077077.html
Copyright © 2011-2022 走看看