Apply social media icons with variable color

by Rodrigo Portillo

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css?ver=6.7.2">
<div class="ass-footer">
  <h4>Share this content:</h4>
  <div class="ass-icons">
    <div class="ass-icon facebook" role="presentation">
      <a data-social="facebook" data-via="" aria-label="Share on Facebook">
        <div class="ass-symbol">
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <i class="fab fa-facebook"></i>
        </div>
        <div class="ass-label">Facebook</div>
      </a>
    </div>

    <div class="ass-icon twitter" role="presentation">
      <a data-social="twitter" data-via="" aria-label="Share on Twitter">
        <div class="ass-symbol">
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <i class="fab fa-twitter"></i>
        </div>
        <div class="ass-label">Twitter</div>
      </a>
    </div>

    <div class="ass-icon linkedin" role="presentation">
      <a data-social="linkedin" data-via="" aria-label="Share on Linkedin">
        <div class="ass-symbol">
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <i class="fab fa-linkedin"></i>
        </div>
        <div class="ass-label">Linkedin</div>
      </a>
    </div>

    <div class="ass-icon whatsapp" role="presentation">
      <a data-social="whatsapp" data-via="" aria-label="Share on Whatsapp">
        <div class="ass-symbol">
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
          <div class="ass-border"></div>
        ...

CSS

@import url("https://fonts.googleapis.com/css2?family=Lexend:[email protected]&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap");

:root{
  --facebook-color-ass: #4478e2;
  --twitter-color-ass: #4cb9f5;
  --linkedin-color-ass: #1c6fd1;
  --whatsapp-color-ass: #58e37d;
  --telegram-color-ass: #33c5f6;
  --pinterest-color-ass: #ff4c6f;
  --reddit-color-ass: #ff7a2d;
  --instagram-color-ass: #e1306c;
  --youtube-color-ass: #ff0000;
}

body{
   margin: 2rem;
   color: white;
   background: black;
}

.ass-icons {
  display: flex;
  flex-wrap: wrap;
  margin-left: -1rem;
  margin-right: -1rem;
}

.ass-icon {
  margin: 1rem;
  text-align: center;
  transition: all 0.2s;
  transition-delay: 0.1s;
  height: 72px;
  width: 72px;
  cursor: pointer;
}
.ass-icon a {
  text-decoration: none;
}
.ass-icon:hover {
  transform: translateY(-12px);
}

.ass-icon .ass-symbol {
  padding: 0.9rem 1rem;
  position: relative;
  transition: all 0.2s;
  height: 72px;
  width: 72px;
}

.ass-icon .ass-symbol .ass-border {
  border: 2px solid;
  border-radius: 0.3rem;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  transition: all 0.4s ease-out;
  transition-delay: 0.1s;
}
.ass-icon .ass-symbol .ass-border {
  opacity: 0;
  transition: all 0.4s;
  transition-delay: 0.1s;
}
.ass-icon .ass-symbol .ass-border:first-child {
  opacity: 1;
}
.ass-icon:hover .ass-symbol .ass-border:nth-child(2) {
  transform: translateX(-5px) translateY(5px);
  opacity: 0.8;
}
.ass-icon:hover .ass-symbol .ass-border:nth-child(3) {
  transform: translateX(-10px) translateY(10px);
  opacity: 0.4;
}
.ass-icon:hover .ass-symbol .ass-border:nth-child(4) {
  transform: translateX(-14px) translateY(14px);
  opacity: 0.2;
}

.ass-icon:hover .ass-symbol {
  transform: rotateX(45deg) rotateZ(-45deg);
  perspective: 2000px;
  transform-style: preserve-3d;
}

.ass-icon .ass-symbol i {
  font-size: 2.5rem;
}

.ass-icon .ass-label {
  opacity: 0;
  transition: all 0.3s;
  font-size: 1.1rem;
 ...