iTakeo

文字飞散。

文字飞散,动画使用css3。效果图如下:


源码如下:

  1. //容器  
  2. var dom = document.querySelector(‘.flyBox’);  
  3. //按钮  
  4. var btn = document.querySelector(‘.flyBtn’);  
  5. //存放字符串  
  6. var html = ;  
  7. //将容器的innerHTML,split成数组,在拼接成字符串  
  8. dom.innerHTML.split().forEach(function(o){  
  9.     html+='<span class=“fly-span”>’+o+'</span>’  
  10. });  
  11. //替换内容  
  12. dom.innerHTML = html;  
  13. //随机数  
  14. function random(min, max) {  
  15.     return Math.random() * (max – min) + min;  
  16. };  
  17. //点击  
  18. btn.onclick = function(){  
  19.     init();  
  20. };  
  21. //获取所有飞散的元素  
  22. var fly = dom.querySelectorAll(‘.fly-span’);  
  23. function init(){  
  24.     //添加css3属性  
  25.     ;[].forEach.call(fly,function(o){  
  26.         o.style.cssText = ‘transform:translate3d(‘+ (off ? random(-500, 500) : 0)+’px,’+(off ? random(-500, 500) : 0)+’px,’+(off ? random(-500, 500) : 0)+’px) scale(‘+(off ? random(2, 1) : 1)+’);opacity:’+  (off ? 0 : 1) +’;transition:all ‘+random(2.5, 4)+’s ease ‘+random(0, 0.2)+’s’;  
  27.     });  
  28. };  

盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。

可以稍微改造一下,让每个文字逐个分散。

  1. //定义一个变量i,然后通过定时器累加,来达到逐个分散的效果  
  2. function init(){  
  3.     timer = setInterval(function(){  
  4.         //当变量i等于元素个数,或者等于0,清除定时器  
  5.         if((i>=fly.length && off) ||(i<=0 && !off)){  
  6.             clearInterval(timer);  
  7.             clickoff = true;  
  8.             return;  
  9.         };  
  10.         fly[i].style.cssText = ‘transform:translate3d(‘+ (off ? random(-500, 500) : 0)+’px,’+(off ? random(-500, 500) : 0)+’px,+(off ? random(-500, 500) : 0)+’px) scale(‘+(off ? random(2, 1) : 1)+’);opacity:’+  (off ? 0 : 1) +’;transition:all ‘+random(2.5, 4)+’s ease ‘+random(0, 0.2)+’s’;    
  11.         //off为true的时候,从开头开始分散,为false的时候,从末尾开始出现  
  12.         off ? i++ : i–;  
  13.     },40)  
  14. };  
  1. btn.onclick = function(){  
  2.     if(clickoff){  
  3.         this.innerHTML = !off ? ‘还原’ :’打乱’;  
  4.         clearInterval(timer);  
  5.         if(!off){  
  6.             i=0;  
  7.         }else{  
  8.             i = fly.length-1;  
  9.         }  
  10.         off = !off;  
  11.         init();  
  12.     };  
  13.     clickoff = false;  
  14. };  

盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。

2015/08/29 1 / /
标签:  暂无标签

评论回复

  1. 回复 Bruce

验证码: 2 + 9 =

回到顶部