JSFiddle - React, Tailwind, and code Playground

HTML

<div id="parent">
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
    <div class="image">
        <img src="http://placekitten.com/200/200" />
        <div class="overlay">Description to be displayed on hover..</div>
    </div>
</div>

CSS

.image {
    position:relative;
    display:inline-block;
    margin:10px;
    transition:all 2s;
    -webkit-transition:all 2s;
    -moz-transition:all 2s;
}
.overlay {
    opacity:0;
    position:absolute;
    width:100%;
    height:100%;
    background:rgba(0, 0, 0, .5);
    border:10px solid red;
    top:0;
    left:0;
    display:inline-block;
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;
    box-sizing:border-box;
    text-align:center;
    color:white;
    padding:12px;
    font-size:20px;
    transition:opacity 2s;
    -webkit-transition:opacity 2s;
    -moz-transition:opacity 2s;
}
.image:hover .overlay {
    opacity:1;
}
img {
    vertical-align:top;
}
#parent {
    display:inline-block;
}
#parent:hover > .image {
    opacity:1;
}
#parent:hover > .image:not(:hover) {
    opacity:.3;
}