JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

function init() {

const FRAG_SIZE = 48;

var defaultEase = Sine.easeOut;

var container = document.getElementById('container'),

containerRect = container.getBoundingClientRect(),

fragments = [],

centerX = 192,

centerY = 192;

TweenMax.set(container, {

perspective:600

});

createFragments();

createTweens();

startUpdateLoop();

function createFragments() {

var fragment;

for (var i = 0; i < 8; i++) {

for (var j = 0; j < 8; j++) {

fragment = document.createElement('div');

fragment.className = 'fragment';

TweenMax.set(fragment, {

x:j * FRAG_SIZE,

y:i * FRAG_SIZE

});

container.appendChild(fragment);

fragments.push(fragment);

}

}

}

function createTweens() {

var tl = new TimelineMax({repeat:-1}),

fragment,

delay;

for (var i = 0; i < fragments.length; i++) {

fragment = fragments[i];

delay = 1 - (i % 8) * randomRange(0.04, 0.06);

if (i < 32) {

if (i === 0) {

tl.insert(createSpecialTween(fragment), delay);

}

else {

tl.insert(createArcTween(fragment), delay);

}

console.log('d1', delay);

}

else {

tl.insert(createStraightTween(fragment), delay);

console.log('d2', delay);

}

}

}

function createSpecialTween(fragment) {

var bezierPoints = [

{x:centerX - 24, y:-256},

{x:centerX - 24, y:centerY - 24}

];

var tl = new TimelineMax(),

tween1 = TweenMax.to(fragment, 1, {

bezier:{type:'soft', values:bezierPoints},

ease:defaultEase

}),

tween2 = TweenMax.to(fragment, 1, {

z:525,

rotationX:360,

rotationY:360,

ease:defaultEase

});

tl.insert(tween1);

tl.insert(tween2);

return tl;

}

function createArcTween(fragment) {

var dx = (centerX - fragment._gsTransform.x - 24),

dy = (centerY - fragment._gsTransform.y - 24);

var bezierPoints = [

{x:fragment._gsTransform.x, y:fragment._gsTransform.y - dy},

{x:fragment._gsTransform.x, y:containerRect.bottom}

];

var tl = new TimelineMax(),

tween1 = TweenMax.to(fragment, randomRange(2.2, 2.8), {

bezier:{values:bezierPoints},

ease:defaultEase

}),

tween2 = TweenMax.to(fragment, randomRange(2.2, 2.8), {

z:randomRange(800, 1000),

rotationX:randomRange(360, 1080),

rotationY:randomRange(360, 1080),

ease:defaultEase

});

tl.insert(tween1);

tl.insert(tween2);

return tl;

}

function createStraightTween(fragment) {

var dx = (centerX - fragment._gsTransform.x - 24) * 4;

return TweenMax.to(fragment, randomRange(3, 3.2), {

x:-dx,

y:window.innerHeight + containerRect.bottom + randomRange(0, 124),

z:randomRange(300, 500) * (Math.random() > 0.5 ? 1 : -1),

rotationX:randomRange(360, 1080),

rotationY:randomRange(360, 1080),

ease:defaultEase

})

}

function startUpdateLoop() {

requestAnimationFrame(tick);

function tick() {

var fragment,

angleX,

angleY;

for (var i = 0; i < fragments.length; i++) {

fragment = fragments[i];

angleX = Math.abs(fragment._gsTransform.rotationX % 180 - 90) / 180;

angleY = Math.abs(fragment._gsTransform.rotationY % 180 - 90) / 180;

var l = Math.round((angleX + angleY) / 2 * 100);

fragment.style.backgroundColor = 'hsl(30,100%,' + l + '%)';

fragment.style.zIndex = Math.round(fragment._gsTransform.z);

}

requestAnimationFrame(tick);

}

}

function randomRange(min, max) {

return min + Math.random() * (max - min);

}

}

window.onload = init;

html5实验原理,HTML5 方块碎片化实验相关推荐

  1. 200套工作室设计行业响应式Html5模板HTML5+CSS3设计网站模板简洁设计师作品展示响应式模板整洁扁平宽屏CSS3网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机se

    200套工作室设计行业响应式Html5模板HTML5+CSS3设计网站模板简洁设计师作品展示响应式模板整洁扁平宽屏CSS3网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机se ...

  2. 【重构前端知识体系之HTML】讲讲对HTML5的一大特性——语义化的理解

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  3. 碎片化趋势下手机浏览器或成赢家

    快节奏的生活.高压力的工作将现代人的休闲时间分割成碎片,同时又带来了海量的信息.所以,人们只能选择一切可以见缝插针的时间来获取信息,于是无论走到哪里,你都可以看到埋头盯着手机屏幕的"手机低头 ...

  4. 碎片化时间学习,这几个在线视频学习网站值得拥有!

    随着生活节奏加快,利用碎片化时间学习来充实自己显得尤其重要,这几个在线视频学习网站能够让你在闲暇的时间将IT编程技术更进一步,学习技巧更加高效. 1.慕课网 慕课网(IMOOC)是国内最大的IT技能学 ...

  5. 对html5的了解,HTML5——对HTML5的认识

    首先非常感谢李刚老师出的这本书<HTML5/CSS3/JavaScript讲义>,今天读了第一章节的内容,趁热打铁,总结一下. HTML5的时代已经到来,它对所有的前端开发人员来说是一种福 ...

  6. 图片碎片化mask动画

    图片碎片化mask动画 效果 源码 https://github.com/YouXianMing/Animations // // TransformFadeViewController.m // A ...

  7. MySQL表碎片化(Table Fragmentation)以及处理

    关于MySQL中表碎片化(Table Fragmentation)产生的原因: 简单总结一下,MySQL Engine不同,碎片化的原因可能也有所差别.这里没有深入理解.分析这些差别.此文仅以Inno ...

  8. 一个html5页面,html5做一个黑板报页面

    html5做一个黑板报页面 我们结合移动设备(手机和平板电脑)的特性,介绍HTML5中新增的语义化标签元素,以及在移动Web浏览器下Web页面布局的知识及例子. 在HTML5标准添加的新元素中,用于常 ...

  9. 免费html5代码,HTML5(示例代码)

    一.什么是HTML5 1.1 HTML5 简介 万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,作为新HTML语言,具有新的元素.属性和行为 XHTML可扩展 ...

最新文章

  1. numpy 点乘_Numpy入门指南
  2. Java的技术采⽤用⽣生命周期
  3. union 和 union all 有什么不同?
  4. leetcode No.2 两数相加
  5. 图像处理工具包ImagXpress使用教程:多页TIFF编辑API的使用(二)
  6. linux 安装_Linux安装JDK
  7. 如何通过Azure Service Management REST API管理Azure服务
  8. Cadence Allegro 差分走线单根走的方法图文教程
  9. 音创linux版e100加歌,【图片】音创高清点歌机E100-3D版 火爆上市 现将资料爆出_点歌机吧_百度贴吧...
  10. python如何确定拐点_如何在嘈杂的曲线中找到拐点?
  11. 如何实现施耐德Twido系列PLC远程上下载
  12. 成功在虚拟机里面安装MAC苹果系统
  13. 涨知识了,原来微信可以一键找到对方位置
  14. React学习资源汇总
  15. 如何利用设备管理系统做好设备预防维护保养工作?
  16. 用 VR 看 NBA,你甚至可以被勒布朗·詹姆斯隔扣
  17. php商品状态精品 热销,ecshop商品列表,商品页,热销,精品,搜索列表页调用商品销售量(已销售数量)-ECSHOP教程网...
  18. ETCP全国4000家停车场全部支持银联无感支付!
  19. 【推荐】有哪些书是值得我认真去读的?欢迎留言推荐
  20. 【MySQL高级篇】第06章_索引的数据结构

热门文章

  1. wait与notify
  2. 如何查看Python的版本
  3. IDEA隐藏不需要的文件
  4. php hashids思路,使用composer添加hashids加密数字
  5. supermap试用许可过期如何重新申请
  6. java使用poi(XSSFWorkbook)读取excel(.xlsx)文件
  7. redis-cli 链接redis命令
  8. Java 文件高效写入方法
  9. IBM MQ 创建以及常见问题
  10. Oracle转义符处理