JSFiddle - React, Tailwind, and code Playground

HTML

<div class="dfi wr">
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
<a href="#" title="">
<img src="https://images.wallpaperscraft.com/image/forest_cat_cat_aggression_sitting_102923_1152x864.jpg">
<i class="icon-ope"></i></a>
</div>

CSS

.dfi{
  width: 600px;
  padding: 70px;
  margin: 0 0 -10px -10px;
}
.icon-ope:hover ~ .dfi img {
  -webkit-transition:opacity 200ms linear 0ms;
  transition: opacity 200ms linear 0ms;
  opacity:0.5;
  -moz-opacity:0.5;
  filter:alpha(opacity=50);
}
.dfi a{
    -webkit-box-flex: 0;
    -ms-flex: 0 0 calc(50% - 10px);
    flex: 0 0 calc(50% - 10px);
    margin: 0 0 10px 10px;
      position: relative;
}
.dfi img {
  width: 100%;
  border: 1px solid rgba(62, 63, 56, 0.5);
}

.dfi{
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}
.wr{
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.icon-ope:before {
  content: "\e913";
  font-size:20px;
  background: rgba(255, 255, 255, 0.4);
  color: #000;
  padding: 8px;
  width: 24px;
height: 24px;
position: absolute;
border-radius: 90px;
z-index: 9000;
text-align: center;
top: 50%;
left: 50%;
margin: -16px 0 0 -16px;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.7);
}
.icon-ope:hover:before {
  background: #EA8430;
  color: #fff;
}