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;
...