Skip to content

Instantly share code, notes, and snippets.

@rolandkorgowski
Created November 8, 2020 23:29
Show Gist options
  • Save rolandkorgowski/5ee4c66f5c254f819c9b1d68588df557 to your computer and use it in GitHub Desktop.
Save rolandkorgowski/5ee4c66f5c254f819c9b1d68588df557 to your computer and use it in GitHub Desktop.
Only CSS: Solar Flare
- var fireCount = 40
#ui
.sun
- for (var i = 0; i < fireCount; i++)
.sun_fire
.sun_fire_inner
.sun_border
.cover
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.5.0/velocity.min.js"></script>
$fireCount: 100;
$sunSize: 400px;
body {
background: #000;
height: 100vh;
overflow: hidden;
}
#ui {
position: absolute;
top: 50%;
left: 50%;
.cover {
position: absolute;
top: 50%;
left: 50%;
width: $sunSize - 20;
height: $sunSize - 20;
background: #000;
transform: translate(-50%, -50%);
border-radius: 100%;
box-shadow: 0 0 50px 10px rgba(200, 0, 0, 0.5);
}
.sun {
position: absolute;
width: 1000px;
height: 1000px;
transform: translate(-50%, -50%);
background: #000;
filter: blur(10px) contrast(15);
&_border {
position: absolute;
top: 50%;
left: 50%;
width: $sunSize;
height: $sunSize;
border: 15px solid yellow;
border-radius: 100%;
box-sizing: border-box;
transform: translate(-50%, -50%);
}
&_fire {
position: absolute;
top: 50%;
left: 50%;
transform-origin: 0 0;
&_inner {
box-sizing: border-box;
}
@for $i from 1 through $fireCount {
&:nth-child(#{$i}) {
animation: sunFire #{random(10000) + 5000}ms infinite linear;
.sun_fire_inner {
$size: #{random(100) + 40}px;
width: $size;
height: $size;
border-top: #{random(10) + 5}px solid orange;
border-right: #{random(10) + 5}px solid orange;
border-bottom: #{random(10) + 5}px solid orange;
border-left: #{random(10) + 5}px solid orange;
border-radius: #{random(70) + 10 + '%'} #{random(70) + 10 + '%'} #{random(70) + 10 + '%'} #{random(70) + 10 + '%'};
animation: sunFireInner #{random(3000) + 2000}ms infinite alternate linear;
}
}
}
}
}
}
@keyframes sunFire {
0% {
transform: rotateZ(0deg);
}
100% {
transform: rotateZ(360deg);
}
}
@keyframes sunFireInner {
0% {
transform: translate($sunSize / 2 - 110, -50%) rotateZ(0deg);
}
50% {
transform: translate($sunSize / 2 - 60, -50%) rotateZ(180deg);
}
100% {
transform: translate($sunSize / 2 - 110, -50%) rotateZ(360deg);
}
}
<link href="https://fonts.googleapis.com/css?family=Dosis:800" rel="stylesheet" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment