Particle FD letters

Mock up showing what our static content can feel like with subtle moving background.

by Allen N.

HTML

<img src="https://i.postimg.cc/Z5f2B2sD/3-pillars.png" alt="Screenshot of Content">
<div class="particles">
  <div class="wrap">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div>
</div>

SCSS

html, body {
  height: 100%;
}
body {
  min-height: 100%;
  overflow: hidden;
}
img {
  position: absolute;
  left: 50%;
  top: 50%;
	width: 80vw;
  transform: translate(-50%, -50%);
}

@keyframes move {
  0% {
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
  70% {
    opacity: 1;
  }
  100% {
    transform: rotate(random(360)+deg) translate3d(((random(1000)) * 1px), ((random(1000) - 500) * 1px), ((random(2000) - 1000) * 1px));
    opacity: 0;
  }
}
.particles {
  position: relative;
  width: 100%;
  min-height: 100%;
  transform-style: preserve-3d;
	opacity: 0.1;
}
.wrap {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 300px;
  height: 300px;
  transform-style: preserve-3d;
  transform-origin: center center;
  transform: translate(-50%, -50%);
  perspective: 600px;
}
.wrap > div {
  position: absolute;
  opacity: 0;
  animation: move 50s infinite;
	color: #0C499C;
	transition: all 333ms;
}
.wrap > div:hover {
	color: #FF4E00;
}
.wrap > div:before {
	font-family: Arial, Helvetica, sans-serif;
	font-weight: bold;
	content: 'FD';
}

@for $i from 1 through 100 {
  .wrap > div:nth-child(#{$i}){
     $size: random(50)+px;
     height: $size;
     width: $size;
     animation-delay: -$i * 1s;
     opacity: 0;
     // opacity: (100 - $i) * 0.01;
     transform: rotate(random(360)+deg) translate3d( ((random(1000) - 500) * 1px),  ((random(1000) - 500) * 1px), ((random(2000) - 1000) * -1px));
     // background: hsl( random(360) , 70%, 50%);
  }
 
}