First of all here's my code:
body{
background: #00BCD4;
background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="100" height="18" viewBox="0 0 100 18"%3E%3Cpath fill="%239C92AC" fill-opacity="0.4" d="M61.82 18c3.47-1.45 6.86-3.78 11.3-7.34C78 6.76 80.34 5.1 83.87 3.42 88.56 1.16 93.75 0 100 0v6.16C98.76 6.05 97.43 6 96 6c-9.59 0-14.23 2.23-23.13 9.34-1.28 1.03-2.39 1.9-3.4 2.66h-7.65zm-23.64 0H22.52c-1-.76-2.1-1.63-3.4-2.66C11.57 9.3 7.08 6.78 0 6.16V0c6.25 0 11.44 1.16 16.14 3.42 3.53 1.7 5.87 3.35 10.73 7.24 4.45 3.56 7.84 5.9 11.31 7.34zM61.82 0h7.66a39.57 39.57 0 0 1-7.34 4.58C57.44 6.84 52.25 8 46 8S34.56 6.84 29.86 4.58A39.57 39.57 0 0 1 22.52 0h15.66C41.65 1.44 45.21 2 50 2c4.8 0 8.35-.56 11.82-2z"%3E%3C/path%3E%3C/svg%3E');
}
.conteiner{
background: #E0F7FA;
height: 500px;
width: 600px;
padding: 20px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
box-shadow: 0 5px 20px rgba(0,0,0,0.4);
border-radius: 15px;
}
.button{
display: flex;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
text-decoration: none;
color: #fff;
font-size: 30px;
font-family: Arial;
font-weight: 700;
height: 90px;
width: 190px;
background: #00ACC1;
border-radius: 15px;
align-items: center;
justify-content: center;
box-shadow: 0 5px 10px rgba(0,0,0,0.4);
transition: 0.6s;
}
.button::before{
content:'';
position: absolute;
top:0;
left: 0;
height: 100%;
width: 45%;
background: #00B6CC;
z-index: -1;
transform: scale(0);
transform-origin: top left;
transition: transform 0.5s;
border-radius: 15px;
}
.button::after{
content:'';
position: absolute;
top:0;
right: 0;
height: 100%;
width: 45%;
background: #00A1B5;
z-index: -1;
transform: scale(0);
transform-origin: bottom right;
transition: transform 0.5s;
border-radius: 15px;
}
.button:hover:after{
transform: scale(1);
transform-origin: bottom right;
}
.button:hover:before{
transform: scale(1);
transform-origin: top left;
}
.button:hover{
height: 100%;
width: 100%;
color: rgba(0,0,0,0);
}
i.fa-user{
position: absolute;
top:50%;
left: 20%;
transform:translateY(-50%);
font-size: 40px;
color: white;
opacity: 0;
transition: .5s;
}
i.fa-cogs{
position: absolute;
top:50%;
right: 20%;
transform:translateY(-50%);
font-size: 40px;
color: white;
opacity: 0;
transition: .5s;
}
.button:hover i{
opacity: 1;
}
.fa-user:hover + .button:before{
width: 90%;
}
<head>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css">
</head>
<div class="conteiner">
<a href="#" class="button">
Hover me
<i class="fas fa-user"></i>
<i class="fas fa-cogs"></i>
</a>
</div>
So, I have :before and :after pseudo elements on my .button (anchor). And I have some Font-Awesome icons that appear when the .button is hovered. Also my :before and :after take the full height and 45% width. So what I want to do is when the icon is hovered, that pseudo element, either :before or :after takes 90% width, and the other pseudo element gets pushed either to left or right.
But main question is how to I trigger pseudo elements to change when hovering over the icon.
Thank You.