前言

所谓文字聚合效果,原理就是将容器分为若干的小块,然后每个小块设置 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
相关文章:
如何通过虚拟主机快速完成网站搭建?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何挑选高效建站主机与优质域名?
如何自定义建站之星模板颜色并下载新样式?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何通过wdcp面板快速创建网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
制作农业网站的软件,比较好的农业网站推荐一下?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何通过服务器快速搭建网站?完整步骤解析
ppt制作免费网站有哪些,ppt模板免费下载网站?
招商网站制作流程,网站招商广告语?
如何快速查询网站的真实建站时间?
山东云建站价格为何差异显著?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何在Tomcat中配置并部署网站项目?
如何高效搭建专业期货交易平台网站?
建站之星安装后如何自定义网站颜色与字体?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
专业网站建设制作报价,网页设计制作要考什么证?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
,柠檬视频怎样兑换vip?
创业网站制作流程,创业网站可靠吗?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
建站主机CVM配置优化、SEO策略与性能提升指南
如何通过商城自助建站源码实现零基础高效建站?
实例解析Array和String方法
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
平台云上自主建站:模板化设计与智能工具打造高效网站
安徽网站建设与外贸建站服务专业定制方案
建站之星代理平台如何选择最佳方案?
建站之星北京办公室:智能建站系统与小程序生成方案解析
建站主机无法访问?如何排查域名与服务器问题
IOS倒计时设置UIButton标题title的抖动问题
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
广州营销型建站服务商推荐:技术优势与SEO优化解析
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何确认建站备案号应放置的具体位置?
Android自定义控件实现温度旋转按钮效果
网站制作企业,网站的banner和导航栏是指什么?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在万网ECS上快速搭建专属网站?
表情包在线制作网站免费,表情包怎么弄?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
建站之星后台密码遗忘?如何快速找回?
如何快速生成高效建站系统源代码?
*请认真填写需求信息,我们会在24小时内与您取得联系。