JSFiddle - React, Tailwind, and code Playground

HTML

<section id="portfolio">
      <ul class="portfolio-elem">
          <li><a href="#"><img
                  src="https://kevinraber.files.wordpress.com/2012/12/july-exhibit-redwood-2-00042-1-wcr.jpg"
                  /><div><h3><i class="fa fa-search fa-5x"></i></h3></div></a></li>
          <li><a href="#"><img
                  src="https://kevinraber.files.wordpress.com/2012/12/july-exhibit-redwood-2-00042-1-wcr.jpg"
                  /><div><h3><i class="fa fa-search fa-5x"></i></h3></div></a></li>
          <li><a href="#"><img
                  src="https://kevinraber.files.wordpress.com/2012/12/july-exhibit-redwood-2-00042-1-wcr.jpg"
                  /><div><h3><i class="fa fa-search fa-5x"></i></h3></div></a></li>
          <li><a href="#"><img
                  src="https://kevinraber.files.wordpress.com/2012/12/july-exhibit-redwood-2-00042-1-wcr.jpg"
                  /><div><h3><i class="fa fa-search fa-5x"></i></h3></div></a></li>
      </ul>
  </section>

CSS

.portfolio-elem {
    margin: 0;
    padding: 0;
    height: 100%;
    list-style: none;
    position: relative;
    width: 100%;
  }

  .portfolio-elem li {
    position: relative;
    float: left;
    overflow: hidden;
    width: 50%; /* Fallback */
    width: -webkit-calc(100% / 2);
    width: calc(100% / 2);
  }

  .portfolio-elem li a,
  .portfolio-elem li a img {
    display: block;
    width: 100%;
    cursor: pointer;
  }

  .portfolio-elem li a img {
    max-width: 100%;
  }

  .portfolio-elem li a div {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background: rgba(71,163,218,0.2);
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flex;
    display: flex;
    -webkit-align-items: center;
    -moz-align-items: center;
    -ms-align-items: center;
    align-items: center;
    text-align: center;
    opacity: 0;
  }

  .portfolio-elem li a:hover div {
    opacity: 1;
  }

  .portfolio-elem li a div h3 {
    width: 100%;
    color: #fff;
    text-transform: uppercase;
    font-size: 1.4em;
    letter-spacing: 2px;
    padding: 0 10px;
  }



  @media screen and (max-width: 2500px) {
    .portfolio-elem li {
      width: 50%; /* Fallback */
      width: -webkit-calc(100% / 2);
      width: calc(100% / 2);
    }
  }

  @media screen and (max-width: 945px) {
    .portfolio-elem li {
      width: 50%; /* Fallback */
      width: -webkit-calc(100% / 2);
      width: calc(100% / 2);
    }
  }

  @media screen and (max-width: 660px) {
    .portfolio-elem li {
      width: 50%; /* Fallback */
      width: -webkit-calc(100% / 2);
      width: calc(100% / 2);
    }
  }

  @media screen and (max-width: 660px) {
    .portfolio-elem li {
      width: 50%; /* Fallback */
      width: -webkit-calc(100% / 2);
      width: calc(100% / 2);
    }
  }

  @media screen and (max-width: 400px) {
    .portfolio-elem li {
      width: 100%; /* Fallback */;
    }
  }

  @media screen and (max-width: 300px) {
    .portfolio-elem...