全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用JS实现文字的聚合动画效果

前言

所谓文字聚合效果,原理就是将容器分为若干的小块,然后每个小块设置 background-poisition ,最后添加css3动画就可以了,去掉注释,也就仅仅20行的代码。

先来看看效果图:

js代码如下:

//c为列数,r为行数,把box划分成多少个小块 
var box = document.querySelector('.boxWrap1'),c=4,r=8; 
//每个小块的宽高 
var w = box.offsetWidth/c,h = box.offsetHeight/r; 
//循环添加小块 
for(var i = 0;i < r;i++){ 
 for(var j = 0;j < c;j++) { 
  var _div=document.createElement('div'); 
  var _left = j * w,_top = i * h; 
  //添加css样式,并设置每个小块的背景 
  _div.style.cssText = 'width:'+w+'px;height:'+h+'px;left:'+_left+'px;top:'+_top+'px; opacity:0;background-position:'+(-_left) + 'px ' + (-_top) + 'px'; 
  //添加css动画时间 
  _div.style.transition = 'all '+ Random(1,1.8) +'s ease'; 
  //添加css的transform动画 
  _div.style.transform = 'perspective(800px) translate3d('+Random(-200,200)+'px, '+Random(-200,200)+'px,300px) rotate('+Random(-90,90)+'deg) scale('+ Random(0,2) +')' 
  //添加 
  box.appendChild(_div); 
 }; 
}; 
//延时添加动画 
setTimeout(function(){ 
 box.classList.add('set'); 
},100); 
//随机数 
function Random(start,end){ 
 return Math.random()*(end-start)+start; 
}; 

完整的示例如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>利用JS实现文字的聚合动画效果</title>
<style>
	.boxWrap1{width: 160px;height: 417px;position: relative;margin:0px auto;}
	.boxWrap1 img{width: 100%;}
	.boxWrap1 div{background: url(http://itakeo.com/wpimg/2_1.png) no-repeat;background-size: 160px auto; position: absolute; left: 0px;top: 0px;
	}
	.boxWrap1.set div{ opacity: 1!important;
			transform:perspective(800px) translate3d(0px,0px,0px) rotate(0deg) scale(1)!important;
			-moz-transform:perspective(800px) translate3d(0px,0px,0px) rotate(0deg) scale(1)!important;
			-webkit-transform:perspective(800px) translate3d(0px,0px,0px) rotate(0deg) scale(1)!important;
	}
	.boxSiteWrap{ width: 100%;overflow: hidden;height: auto; background: #000;padding: 140px 0}
	.boxSiteWrap button{cursor:pointer;display: block;font-size: 16px; width: 140px;height: 40px; background: #fff;color: #000;border:none;margin:30px auto;}
</style>
</head>

<body>
<div class="boxSiteWrap">
<div class="boxWrap1"></div>
<button>重新加载</button>
</div>

<script>
window.addEventListener('load',function(){
;(function(){
	function init(){
		var box = document.querySelector('.boxWrap1'),c=4,r=8;
		var w = box.offsetWidth/c,h = box.offsetHeight/r;
		for(var i=0;i<r;i++){
			for(var j=0;j<c;j++) { 
				var _div=document.createElement('div'); 
				var _left = j * w,_top = i * h;
				_div.style.cssText = 'width:'+w+'px;height:'+h+'px;left:'+_left+'px;top:'+_top+'px; opacity:0;background-position:'+(-_left) + 'px ' + (-_top) + 'px';
				_div.style.transition = _div.style.MozTransition = _div.style.WebkitTransition = 'all '+ Random(1,1.8) +'s ease';
				_div.style.transform = _div.style.MozTransform = _div.style.WebkitTransform = 'perspective(800px) translate3d('+Random(-200,200)+'px, '+Random(-200,200)+'px,300px) rotate('+Random(-90,90)+'deg) scale('+ Random(0,2) +')'
				box.appendChild(_div);
			};
		};
		setTimeout(function(){
			box.classList.add('set')
		},100);
		function Random(start,end){ 
		 return Math.random()*(end-start)+start; 
		};
	};
	init();
	var flag = true;
	document.querySelector('button').onclick = function(){
		if(flag){
			document.querySelector('.boxWrap1').classList.remove('set')
			setTimeout(function(){
				document.querySelector('.boxWrap1').innerHTML = '';
				init();
				flag = true;
			},1200);
			flag = false;
		};
	};
})();
});
</script>
</body>
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# js  # 文字动画  # 粒子效果  # js文字动画  # js文字动画效果  # 实例介绍JavaScript中多种组合继承  # 15分钟深入了解JS继承分类、原理与用法  # JavaScript寄生组合式继承原理与用法分析  # JavaScript常见继承模式实例小结  # 彻底理解js面向对象之继承  # js中继承的几种用法总结(apply  # call  # prototype)  # JavaScript是如何实现继承的(六种方式)  # JavaScript继承与聚合实例详解  # 小块  # 随机数  # 也就  # 这篇文章  # 先来  # 多少个  # 就可以  # 行数  # 加载  # 有疑问  # translate3d  # rotate  # deg  # perspective  # ease  # position  # Random  # transform  # left  # transition 


相关文章: 浅谈Javascript中的Label语句  Swift中swift中的switch 语句  如何在景安服务器上快速搭建个人网站?  建站之星如何实现网站加密操作?  重庆市网站制作公司,重庆招聘网站哪个好?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  深圳网站制作案例,网页的相关名词有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  PHP正则匹配日期和时间(时间戳转换)的实例代码  C#怎么使用委托和事件 C# delegate与event编程方法  如何制作一个表白网站视频,关于勇敢表白的小标题?  建站之星各版本价格是多少?  制作证书网站有哪些,全国城建培训中心证书查询官网?  常州企业建站如何选择最佳模板?  如何在新浪SAE免费搭建个人博客?  IOS倒计时设置UIButton标题title的抖动问题  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星免费模板:自助建站系统与智能响应式一键生成  C#如何使用XPathNavigator高效查询XML  建站之星24小时客服电话如何获取?  如何自定义建站之星网站的导航菜单样式?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  建站主机选哪种环境更利于SEO优化?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Python文件管理规范_工程实践说明【指导】  ,南京靠谱的征婚网站?  php json中文编码为null的解决办法  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  清除minerd进程的简单方法  如何在建站主机中优化服务器配置?  高防服务器租用如何选择配置与防御等级?  微信小程序 五星评分(包括半颗星评分)实例代码  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  香港服务器如何优化才能显著提升网站加载速度?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  ppt制作免费网站有哪些,ppt模板免费下载网站?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何用腾讯建站主机快速创建免费网站?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  建站主机是什么?如何选择适合的建站主机?  如何快速登录WAP自助建站平台?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  简历在线制作网站免费版,如何创建个人简历?  如何用y主机助手快速搭建网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  建站10G流量真的够用吗?如何应对访问高峰?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。