JSFiddle - React, Tailwind, and code Playground
HTML
<div id="wrap">
<div class="gradient">
</div>
</div>
CSS
#wrap {
position: relative;
width: 120px;
margin: 5em auto 0 auto;
}
:before,
:after {
box-sizing: border-box;
}
.gradient:before {
width: 120px;
height: 120px;
content: " ";
position: absolute;
left: 50%;
top: -35px;
margin-left: -60px;
background: orange;
border: 2px solid black;
}
.gradient:after {
background: url(http://maps.finance.gov.au/sites/all/themes/maps_theme/images/icon-dof-cycle.png) 0 0 no-repeat;
-webkit-mask-image: url(https://opc.com.au/sites/default/files/trans-gradient-2.png);
-o-mask-image: url(https://opc.com.au/sites/default/files/trans-gradient-2.png);
-moz-mask-image: url(https://opc.com.au/sites/default/files/trans-gradient-2.png);
mask-image: url(https://opc.com.au/sites/default/files/trans-gradient-2.png);
content: "";
position: absolute;
width: 40px;
height: 80px;
margin-left: -25px;
margin-top: -25px;
top: 10%;
left: 50%;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
.gradient {
height: 120px;
position: relative;
}
.gradient:hover {
cursor: pointer;
}
.gradient:hover:after {
background-position: 0 -30px;
}