Built with blockbuilder.org
Forked from here
To do:
- remake parts with d3.js
- adjust conditional CSS
| license: mit |
Built with blockbuilder.org
Forked from here
To do:
| <!DOCTYPE html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> | |
| < | |
| <script src="https://d3js.org/d3.v4.min.js"></script> | |
| <style> | |
| *, *:after, *:before { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| background-color: #000; | |
| margin: 0; | |
| } | |
| .canvas { | |
| overflow: hidden; | |
| // relative, absolute | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| .foreground { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| background: url('http://www.sketchworld.de/images/trees2.png') repeat-x left bottom; | |
| background-size: 10%; | |
| color: white; | |
| text-align: center; | |
| padding-top: 20px; | |
| font-size: 20px; | |
| } | |
| .sky { | |
| height: 300%; | |
| width: 300%; | |
| position: absolute; | |
| top: -100%; | |
| left: -100%; | |
| margin-top: (100% / 2); | |
| background-color: darkblue; | |
| background:-webkit-radial-gradient(center, rgba(0,0,70,1) 0%, #000 60%); | |
| -webkit-animation: rotate 250s infinite linear; | |
| -webkit-backface-visibility: hidden; | |
| -webkit-transform-style: preserve-3d; | |
| } | |
| } | |
| .star-blink { | |
| $Size: 7px; | |
| position: absolute; | |
| width: $Size; | |
| height: $Size; | |
| background-color: #b6cbd4; | |
| border-radius: 50%; | |
| z-index: 0; | |
| -webkit-transform: rotate(0deg) scale(0.08); | |
| -webkit-backface-visibility: hidden; | |
| -webkit-animation: blinkAfter 15s infinite ease-out; | |
| div { | |
| width: 100%; | |
| height: 100%; | |
| border-radius: 50%; | |
| -webkit-transform: rotate(45deg) scale(0.75); | |
| box-shadow: 0 0 2px 8px rgba(0,0,0,0.4), | |
| 0 0 2px 9px rgba(255,255,255,0.07), | |
| 0 0 2px 15px rgba(0,0,0,0.4), | |
| 0 0 2px 16px rgba(255,255,255,0.1); | |
| -webkit-backface-visibility: hidden; | |
| } | |
| // NOT Relevant | |
| //top: 25%; | |
| //left: 25%; | |
| $height: 800%; | |
| &:after, &:before, div:after, div:before { | |
| $width: 10%; | |
| $color: #b6cbd4; | |
| content: ''; | |
| position: absolute; | |
| display: block; | |
| top: -($height / 2 - 50%); | |
| left: (50% - ($width / 2)); | |
| height: $height; | |
| width: $width; | |
| border-radius: 50%; | |
| background-color: $color; | |
| background:-webkit-linear-gradient( | |
| top, | |
| rgba(255,255,255,0.1) 0%, | |
| rgba(255,255,255,0.7) 50%, | |
| rgba(255,255,255,0.1) 100%); | |
| z-index: 1; | |
| box-shadow: 0 0 25px white; | |
| -webkit-backface-visibility: hidden; | |
| } | |
| &:after { | |
| } | |
| &:before, div:before { | |
| -webkit-transform: rotate(90deg); | |
| } | |
| &.blue { | |
| &:after, &:before, div:after, div:before { | |
| box-shadow: 0 0 25px rgba(0,0,255,1); | |
| } | |
| } | |
| &.red { | |
| &:after, &:before, div:after, div:before { | |
| box-shadow: 0 0 25px rgba(255,0,0,1); | |
| } | |
| } | |
| } | |
| @-webkit-keyframes blinkAfter { | |
| 0% { | |
| -webkit-transform: rotate(0deg) scale(0.08); | |
| } | |
| 4% { | |
| -webkit-transform: rotate(-20deg) scale(0.9); | |
| } | |
| 8% { | |
| -webkit-transform: rotate(-40deg) scale(0.08); | |
| } | |
| 50% { | |
| -webkit-transform: rotate(-40deg) scale(0.08); | |
| } | |
| 52% { | |
| -webkit-transform: rotate(-50deg) scale(0.3); | |
| } | |
| 54% { | |
| -webkit-transform: rotate(-60deg) scale(0.08); | |
| } | |
| 100% { | |
| -webkit-transform: rotate(0deg) scale(0.08); | |
| } | |
| } | |
| @-webkit-keyframes rotate { | |
| 0% { | |
| -webkit-transform: rotate(0deg); | |
| } | |
| 100% { | |
| -webkit-transform: rotate(360deg); | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="canvas"> | |
| <div class="sky"></div> | |
| <div class="foreground"></div> | |
| </div> | |
| <script> | |
| var amount = 800; | |
| var sky = $('.sky'); | |
| for (var i = 0 ; i < amount ; i++ ) { | |
| var s = $('<div class="star-blink"><div></div></div>'); | |
| s.css({ | |
| 'top': Math.random() * 100 + '%', | |
| 'left': Math.random() * 100 + '%', | |
| 'animation': 'blinkAfter 15s infinite ' + Math.random() * 100 + 's ease-out', | |
| 'width': Math.random() * 2 + 7 + 'px', | |
| 'height': Math.random() * 2 + 7 + 'px', | |
| 'opacity': Math.random() * 5 / 10 + 0.5 | |
| }); | |
| if (i % 8 === 0) { | |
| s.addClass('red'); | |
| } else if (i % 10 === 6) { | |
| s.addClass('blue'); | |
| } | |
| sky.append(s); | |
| } | |
| </script> | |
| </body> |