velocity官方的一个示例动画效果代码
代码语言:html
所属分类:动画
代码描述:velocity官方的一个示例动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> * { box-sizing: border-box; } html, body { height: 100%; overflow: hidden; } body { background: #383838; font-family: 'Open sans',sans-serif; } .lego { border-width: 3px; border-style: solid; border-color: #ffc37b; color: #ffc37b; width: 79px; height: 79px; display: block; border-radius: 50%; position: absolute; margin-left: -39.5px; margin-top: -39.5px; bottom: 45px; right: 30px; opacity: 0; } .lego__text { bottom: -25px; width: 100%; text-align: center; margin-left: -13px; font-size: 12px; } .lego__text--header { top: -25px; font-size: 10px; margin-left: 0; } .restart { top: 50%; left: 50%; border-radius: 50%; width: 32px; height: 32px; margin-left: -16px; margin-top: 128px; background: url(//repo.bfw.wiki/bfwrepo/icon/5e7a050749c06.png) no-repeat center 42.5%; background-size: 50% auto; opacity: 0; border-width: 2px; border-style: solid; border-color: #fff; } .restart:hover { cursor: pointer; border-color: #ccc; } .my-logo { top: 50%; left: 50%; z-index: 20; display: inline-block; color: #fcf7c0; text-align: center; } .my-logo__header { width: 108px; font-size: 14px; } .my-logo__img { margin-top: 25px; border-width: 4px; border-style: solid; border-color: #ff6664; width: 108px; height: 108px; border-radius: 50%; background: #fcf7c0 url(//repo.bfw.wiki/bfwrepo/image/5d6539613d08b.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_100,h_100,/quality,q_90); } .my-logo__text { color: #fcf7c0; bottom: -160px; left: -4px; font-size: 14px; } .line { width: 2px; height: 0; top: 50%; left: 50%; margin-left: -1px; background: #00ffc6; transform-origin: center bottom; } .bubble { width: 24px; height: 24px; border-width: 12px; border-style: solid; border-color: #00ffc6; border-radius: 50%; top: 50%; left: 50%; opacity: 0; } .bubbles { width: 100%; height: 100%; top: 0; left: 0; margin-top: -100px; margin-left: -10px; } .easy { top: 50%; left: 50%; line-height: 240px; background: #00ffc6; border-radius: 50%; text-align: center; transform: translate(-50%,-50%); font-size: 60px; color: #383838; text-transform: uppercase; z-index: 11; width: 0; height: 0; overflow: hidden; } .easy__wrapper { width: 100%; height: 100%; top: 0; left: 0; } .easy__text { width: 100%; height: 100%; } .easy__line { width: 100%; height: 100%; border-radius: 50%; border-width: 4px; border-style: solid; border-color: #383838; z-index: 0; transform: translate(-50%); } .drop { width: 4px; height: 4px; top: 50%; left: 50%; opacity: 0; } .spark { background: #00ffc6; opacity: 0; border-radius: 50%; } .thunder-bg { background: #00ffc6; opacity: 0; width: 100%; height: 100%; top: 0; left: 0; z-index: 0; } .arrow { width: 2px; height: 200px; transform-origin: center bottom; background: #00ffc6; top: -100%; left: 100%; margin-top: -175px; } .arrow--center { margin-left: -28px; margin-top: -120px; } .arrow--wrap { width: 100%; height: 100%; top: 0; left: 0; margin-top: 0; background: 0 0; } .car { height: 10px; width: 40%; opacity: 0; } .car--1 { right: 100%; top: 40%; border-top-left-radius: 50%; border-bottom-left-radius: 50%; } .car--2 { left: 100%; top: 60%; border-top-right-radius: 50%; border-bottom-right-radius: 50%; } .text { font-family: 'Open Sans'; font-size: 60px; text-transform: uppercase; font-weight: 100; text-align: center; letter-spacing: 10px; } .text--fast { width: 100%; height: 100%; top: 0; left: 0; } .text--robust { top: 50%; left: 50%; margin-left: -200px; z-index: 8; overflow: hidden; transform-origin: left bottom; } .text--robust__shade { background: #383838; top: 0; width: 100%; height: 100%; } .text--robust__shade--1 { transform: skew(-20deg) translateX(-4px); left: -90px; } .text--robust__shade--2 { width: 90px; right: 0; } .text__bit { top: 50%; left: 50%; } .text__bit--1 { margin-left: -90px; } .text__bit--2 { margin-left: -45px; } .text__bit--3 { margin-left: 0; } .text__bit--4 { margin-left: 45px; } .text__bit__inner { display: inline-block; position: static; transform-origin: center bottom; } .text__bit span { display: inline-block; margin-top: -30px; } .c-green-g { background: #00ffc6; } .c-green-c-g { color: #00ffc6; } .c-grey-g { background: #383838; } .c-red-g { background: #ff1493; } .circle { border-radius: 50%; } .center { top: 50%; left: 50%; } .a-g { position: absolute; } div { position: absolute; z-index: 10; font-family: 'Open sans',sans-serif; } .screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .screen--robust { z-index: 1; } .screen--easy { z-index: 12; } .screen--logos { z-index: 20; } .inherit-bg { background: inherit; } .velocity { position: absolute; top: 50%; left: 50%; color: #00ffc6; font-size: 70px; text-transform: uppercase; font-weight: 100; margin-left: 1320px; min-width: 400px; margin-top: -40px; transform: translateX(-160px); } .velocity span { display: inline-block; } </style> </head> <body translate="no"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:400italic,400,300,600,700,800" rel="stylesheet" type="text/css"> <div id="js-car1" class="car car--1 c-green-g"></div> <div id="js-car2" class="car car--2 c-green-g"></div> <div id="js-fast" class="c-green-c-g text text--fast"> <div class="text__bit text__bit--1"> <div id="js-bit-inner" class="text__bit__inner"> <span id="js-span">f</span> </div> </div> <div class="text__bit text__bit--2"> <div id="js-bit-inner" class="text__bit__inner"> <span id="js-span">a</span> </div> </div> <div class="text__bit text__bit--3"> <div id="js-bit-inner" class="text__bit__inner"> <span id="js-span">s</span> </div> </div> <div class="text__bit text__bit--4"> <div id="js-bit-inner" class="text__bit__inner"> <span id="js-span">t</span> </div> </div> </div> <div id="js-arrow1" class="arrow"></div> <div id="js-arrow2" class="arrow"></div> <div id="js-arrow3" class="arrow"></div> <div id="js-arrow-wrap" class="arrow arrow--wrap"> <div id="js-arrow4" class="arrow arrow--center"></div> </div> <div id="js-robust-screen2" class="screen screen--robust"> <div id="js-robust-screen" class="screen screen--robust"> <div id="js-robust" class="text text--robust c-green-c-g"> robust <div id="js-robust-shade1" class="text--robust__shade text--robust__shade--1"></div> <div id="js-robust-shade2" class="text--robust__shade text--robust__shade--2"></div> </div> </div> </div> <div id="js-thunder-bg" class="thunder-bg"></div> <div id="js-easy-screen" class="screen screen--easy"> <div id="js-easy" class="text easy"> <div id="js-easy-wrapper" class="easy__wrapper"> <div id="js-easy-text" class="easy__text"> easy </div> </div> </div> </div> <div id="js-screen1" class="screen"> <div id="js-line" class="line"></div> </div> <div id="js-screen2" class="screen"></div> <div id="js-velocity" class="velocity"> <span>v</span><span>e</span><span>l</span><span>o</span><span>c</span><span>i</span><span>t</span><span>y</span><span>.</span><span>j</span><span>s</span> </div> <div id="js-logos-screen" class="screen screen--logos"> <a id="js-github" class="github"> <div class="github__text"> VelocityJS on GitHub </div> </a> <div id="js-restart" class="restart"></div> <a id="js-lego" class="lego"> <div class="lego__text lego__text--header"> Demo by: </div> <div class="lego__text lego__text"> @legomushroom </div> </a> </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> <script> (function () { var Helpers; Helpers = function () { function Helpers() {} Helpers.prototype.createDiv = function (o) { var $cont, $el; if (o == null) { o = {}; } $el = $('<div />'); o["class"] != null && $el.addClass(o["class"]); $cont = (o != null ? o.container: void 0) || $(document.body); $cont.append($el); return $el; }; Helpers.prototype.cloneBits = function ($proto, cnt, $container) { var $cont, $new, circles, i, _i; if (cnt == null) { cnt = 20; } circles = []; for (i = _i = 0; 0 <= cnt ? _i < cnt: _i > cnt; i = 0 <= cnt ? ++_i: --_i) { $new = $proto.clone(); $cont = $container || $(document.body); $cont.append($new); circles.push($new); } return circles; }; Helpers.prototype.rand = function (min, max) { return Math.floor(Math.random() * (max + 1 - min) + min); }; return Helpers; }(); window.helpers = new Helpers(); $.easing.quake = function (t) { var b; b = Math.exp(-t * 10) * Math.cos(Math.PI * 2 * t * 10); if (t >= 1) { return 1; } return 1 - b; }; $.easing.elasticOut = function (t) { var a, p, s; s = void 0; a = 0.1; p = 0.4; if (t === 0) { return 0; } if (t === 1) { return 1; } if (!a || a < 1) { a = 1; s = p / 4; } else { s = p * Math.asin(1 / a) / (2 * Math.PI); } return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; }; }).call(this); (function () { var Spark; Spark = function () { function Spark(o) { this.o = o != null ? o: {}; this.vars(); this.init(); } Spark.prototype.vars = function () {}; Spark.prototype.init = function () { var $proto, $spark, i, size, _i, _len, _ref, _results; $proto = helpers.createDiv({ "class": 'spark' }); this.sparks = helpers.cloneBits($proto, this.o.cnt || helpers.rand(10, 20)); size = this.o.size || 2; _ref = this.sparks; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { $spark = _ref[i]; _results.push($spark.css({ width: size + helpers.rand(0, size), height: size + helpers.rand(0, size), left: this.o.left || '50%', top: "" + (this.o.top || 50) + "%", marginTop: this.o.shiftY, marginLeft: this.o.shiftX })); } return _results; }; Spark.prototype.run = function () { var $spark, blowSize, i, top, _i, _len, _ref, _results; _ref = this.sparks; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { $spark = _ref[i]; blowSize = this.o.blowSize || 100; top = 2 * this.o.top || 100; if (top < 100) { top = 100; } _results.push($spark.velocity({ translateX: helpers.rand(-blowSize, blowSize), translateY: helpers.rand(-blowSize, blowSize), opacity: 1 }, { duration: 500 + blowSize, easing: 'easeInOutQuad', delay: (this.o.delay || 0) + helpers.rand(0, 100) }). velocity({ top: "" + top + "%", translateY: 0, marginTop: 0, opacity: -2 }, { duration: this.o.duration || 2500, easing: 'easeInOutExp' })); } return _results; }; return Spark; }(); window.Spark = Spark; }).call(this); (function () { var Bubbles; Bubbles = function () { function Bubbles(o) { this.o = o != null ? o: {}; this.vars(); this.init(); } Bubbles.prototype.vars = function () { this.$el = helpers.createDiv({ "class": "bubbles" }); return this.$proto = $('<div class="bubble" />'); }; Bubbles.prototype.init = function () { var $bit, i, size, _i, _len, _ref, _results; this.bits = helpers.cloneBits(this.$proto, 30, this.$el); _ref = this.bits; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { $bit = _ref[i]; size = helpers.rand(12, 24); _results.push($bit.css({ width: size, height: size, borderWidth: size / 2 })); } return _results; }; Bubbles.prototype.run = function (delay) { var $bit, i, _i, _len, _ref; _ref = this.bits; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { $bit = _ref[i]; $bit.velocity({ top: '-10%', borderWidth: 0, translateX: helpers.rand(-120, 120), translateY: helpers.rand(0, 300), opacity: 100 }, { duration: 1400, delay: helpers.rand(i * 25, i * 25 + 1000) + delay }); } return this.$el.velocity({ marginTop: 0 }, { duration: 1000, delay: delay }); }; return Bubbles; }(); window.Bubbles = Bubbles; }).call(this); (function () { var Drop; Drop = function () { function Drop(o) { this.o = o != null ? o: {}; this.vars(); this.init(); } Drop.prototype.vars = function () { return this.$proto = $('<div class="circle c-green-g drop" />'); }; Drop.prototype.init = function () { this.radius = this.o.radius; if (this.radius == null) { this.radius = 200; } this.cnt = this.radius / 10; return this.$els = helpers.cloneBits(this.$proto, this.cnt, this.o.$container); }; Drop.prototype.run = function () { var $el, angle, centerX, centerY, coef, delay, delayStep, i, left, left2, step, stepCalc, top, top2, _i, _j, _k, _len, _ref, _results; step = 2 * Math.PI / this.cnt; angle = 0; centerX = 0; centerY = 0; _ref = this.$els; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { $el = _ref[i]; left = parseInt(centerX + Math.cos(angle) * (this.radius / 1.25), 10); top = parseInt(centerY + Math.sin(angle) * (this.radius / 1.25), 10); $el.css({ marginLeft: left, marginTop: top }); left2 = parseInt(centerY + Math.cos(angle) * (1.1 * this.radius), 10); top2 = parseInt(centerY + Math.sin(angle) * (1.1 * this.radius), 10); left2 -= left; top2 -= top; $el.velocity({ translateX: left2, translateY: top2, opacity: 1 }, { delay: this.o.i * 15, easing: 'easeOutElastic', duration: 1500 }); coef = 1; if (left >= 0) { delayStep = 100 * coef; stepCalc = 50; for (i = _j = 0; _j <= 1200; i = _j += stepCalc) { if (top >= i && top <= i + stepCalc) { delay = i / stepCalc * delayStep; } } delayStep = 20 * coef; for (i = _k = 0; _k <= 1200; i = _k += stepCalc) { if (top <= -i && top >= -i - stepCalc) { delay = i / stepCalc * delayStep; } } if (delay == null) { delay = 100 * coef; } $el.velocity({ .........完整代码请登录后点击上方下载按钮下载查看
网友评论0