Logo animation for Horizon.io
A Pen by Chris Gannon on CodePen.
Logo animation for Horizon.io
A Pen by Chris Gannon on CodePen.
| <svg id="logoSVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 600" preserveAspectRatio="xMidYMid meet" | |
| > | |
| <defs> | |
| <linearGradient id="skyGrad" x1="399.25" y1="335.05" x2="406.25" y2="6.05" gradientUnits="userSpaceOnUse"> | |
| <stop id="lower" offset="0.15" stop-color="#f9b681"/> | |
| <stop id="upper" offset="1" stop-color="#eb4a78"/> | |
| </linearGradient> | |
| <clipPath id="waterMask" > | |
| <rect y="300" fill="#E00000" width="800" height="300" /> | |
| </clipPath> | |
| <clipPath id="skyMask" > | |
| <rect fill="#E00000" width="800" height="301"/> | |
| </clipPath> | |
| <clipPath id="mainCircleMask"> | |
| <circle cx="400" cy="300" r="284" /> | |
| </clipPath> | |
| </defs> | |
| <title>logo</title> | |
| <g id="wholeLogo" clip-path="url(#mainCircleMask)"> | |
| <g clip-path="url(#waterMask)"> | |
| <!-- <circle id="waterCircle" cx="400" cy="300" r="284" fill="#5db3c6"/> --> | |
| <rect id="waterCircle" fill="#5DB3C6" width="800" height="600"/> | |
| <path id="waterRipple" fill="#A5DCE4" d="M700,300c0,0-44,72-113,81s-181,13-174,32s101,18,83,40S319,544.1,0,510.1 | |
| C0,551.8,0,840,0,840l1007.1,19c0,0-3.1-377.4,0-454C1014,231.9,794,178,700,300z"/> | |
| </g> | |
| <g clip-path="url(#skyMask)"> | |
| <!-- <circle id="skyCircle" cx="400" cy="300" r="284" fill="url(#skyGrad)"/> --> | |
| <rect id="skyCircle" fill="url(#skyGrad)" width="800" height="600"/> | |
| <circle id="sun" cx="400" cy="300" r="105" fill="#fefdeb"/> | |
| </g> | |
| </g> | |
| </svg> |
| var xmlns = "http://www.w3.org/2000/svg", | |
| xlinkns = "http://www.w3.org/1999/xlink", | |
| select = function(s) { | |
| return document.querySelector(s); | |
| }, | |
| selectAll = function(s) { | |
| return document.querySelectorAll(s); | |
| } | |
| TweenMax.set('svg', { | |
| visibility: 'visible', | |
| transformOrigin:'50% 50%', | |
| scale:1 | |
| }) | |
| var mainTl = new TimelineMax({repeat:-1, yoyo:true, repeatDelay:2}); | |
| var skySunTl = new TimelineMax({paused:true}); | |
| skySunTl.fromTo('#lower', 10, { | |
| stopColor:'#020111' | |
| },{ | |
| stopColor:'#CD82A0', | |
| ease:Linear.easeNone | |
| }) | |
| .fromTo('#upper', 10, { | |
| stopColor:'#1F1F2B' | |
| },{ | |
| stopColor:'#4B4A6A', | |
| ease:Linear.easeNone | |
| },'-=10') | |
| .to('#lower', 10, { | |
| stopColor:'#95DFFF', | |
| ease:Linear.easeNone | |
| }) | |
| .to('#upper', 10, { | |
| stopColor:'#94DFFF', | |
| ease:Linear.easeNone | |
| },'-=10') | |
| .to('#lower', 10, { | |
| stopColor:'#f9b681', | |
| ease:Linear.easeNone | |
| }) | |
| .to('#upper', 10, { | |
| stopColor:'#eb4a78', | |
| ease:Linear.easeNone | |
| },'-=10') | |
| .fromTo('#sun', 10, { | |
| fill:'#B30200' | |
| }, | |
| { | |
| fill:'#EC8323', | |
| ease:Linear.easeNone | |
| },'-=30') | |
| .to('#sun', 10, { | |
| fill:'#FFF', | |
| ease:Linear.easeNone | |
| },'-=20') | |
| .to('#sun', 10, { | |
| fill:'#fefdeb', | |
| ease:Linear.easeNone | |
| },'-=10') | |
| .fromTo('#sun', 15, { | |
| attr:{ | |
| cy:410, | |
| r:105 | |
| }},{ | |
| attr:{ | |
| cy:0, | |
| r:90 | |
| }, | |
| ease:Power1.easeInOut | |
| },'-=30') | |
| .to('#sun', 14, { | |
| attr:{ | |
| cy:300, | |
| r:105 | |
| }, | |
| ease:Sine.easeInOut | |
| },'-=13') | |
| .from('#mainCircleMask circle', 30, { | |
| attr:{ | |
| r:500 | |
| }, | |
| ease:Power1.easeInOut | |
| },'-=30') | |
| var waterTl = new TimelineMax({paused:true}); | |
| waterTl.fromTo('#waterCircle', 30, { | |
| fill:'#020111' | |
| },{ | |
| fill:'#5DB3C6', | |
| ease:Linear.easeNone | |
| }) | |
| .fromTo('#waterRipple', 30, { | |
| fill:'#020111' | |
| },{ | |
| fill:'#A5DCE4', | |
| ease:Linear.easeNone | |
| },'-=30') | |
| .fromTo('body', 30, { | |
| backgroundColor:'#020111' | |
| },{ | |
| backgroundColor:'#FFF', | |
| ease:Linear.easeNone | |
| },'-=30') | |
| var skySunTween = TweenMax.to(skySunTl, 10, { | |
| time:skySunTl.duration(), | |
| ease:Power2.easeInOut | |
| }) | |
| var waterTween= TweenMax.to(waterTl, 10, { | |
| time:waterTl.duration(), | |
| ease:Power2.easeInOut | |
| }) | |
| mainTl.add(skySunTween, 0); | |
| mainTl.add(waterTween, 0); | |
| mainTl.timeScale(4); | |
| mainTl.play(0) | |
| //ScrubGSAPTimeline(mainTl) | |
| //tl.timeScale(30) |
| <script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script> |
| body { | |
| background-color:#FFF; | |
| overflow: hidden; | |
| } | |
| body, | |
| html { | |
| height: 100%; | |
| width: 100%; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| svg{ | |
| width:100%; | |
| height:100%; | |
| visibility:hidden; | |
| } |