JSFiddle - React, Tailwind, and code Playground

HTML

<div class="entry">
    <div class="button">
        <div class="permalink"><a href=""><img src="http://static.tumblr.com/27apcde/7yjmrnwpi/pl.png"></a>
        </div>
    </div>
    <div class="button">
        <div class="reblog"><a href=""><img src="http://static.tumblr.com/27apcde/xpBmrnwv5/rb.png"></a>

        </div>
    </div>
    <div class="photo">
        <center>
            <div class="shadow">
                <img src="https://40.media.tumblr.com/fdd926af3420367b603b70dc3fed196e/tumblr_mxrdbq86PY1r9a23uo1_500.jpg" />
            </div>
        </center>
    </div>
</div>

CSS

.entry {
    position:relative;
    padding:10px;
}
.photo {
    width:250px;
    padding:10px;
    background:#fff;
    border:1px solid #ddd;
}
.photo img {
    width:100%;
}

/*VIGNETTE*/
 .shadow {
    position:relative;
    display:block;
    -webkit-transition:all.5s linear;
}
.shadow img {
    display:block;
    -webkit-transition:all.5s linear;
}
.shadow::before {
    -webkit-box-shadow:inset 0 0 0px #000;
    -moz-box-shadow:inset 0 0 0px #000;
    box-shadow:inset 0 0 0px #000;
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    content:"";
    -webkit-transition:all.5s ease-out;
    -moz-transition:all.5s ease-out;
    transition:all.5s ease-out;
}
.shadow:hover::before,
.button:hover+.photo .shadow::before,
.button:hover+.button+.photo .shadow::before{
    -webkit-box-shadow:inset 0 0 250px #000;
    -moz-box-shadow:inset 0 0 250px #000;
    box-shadow:inset 0 0 250px #000;
    -webkit-transition:all.8s ease-in;
    -moz-transition:all.8s ease-in;
    transition:all.8s ease-in;
}

/*BUTTONS*/
 .button {
    position:absolute;
    background:#;
    left:21px;
    bottom:33px;
    z-index:10;
}
.button, .button a {
    cursor:pointer;
}
.reblog {
    position:absolute;
    opacity:0;
    height:14px;
    margin-top:-22px;
    margin-left:180px;
    border-radius:20px;
    background:#;
    border:2px solid #fff;
    padding:8px;
    -webkit-transition:all .5s ease-out;
    -moz-transition:all .5s ease-out;
    transition:all .5s ease-out;
}
.permalink {
    position:absolute;
    opacity:0;
    height:14px;
    margin-top:-22px;
    margin-left:180px;
    border-radius:20px;
    background:#;
    border:2px solid #fff;
    padding:8px;
    -webkit-transition:all .5s ease-out;
    -moz-transition:all .5s ease-out;
    transition:all .5s ease-out;
}
.entry:hover .reblog {
    opacity:1;
    margin-left:0px;
    -webkit-transition:all .5s linear;
    -moz-transition:all .5s linear;
    transition:all .5s linear;
   ...