JSFiddle - React, Tailwind, and code Playground

by Avnish Sanujay

HTML

<!-- 1st row verticaly centered text in the square columns -->

<div class="square">
    <div class="content">
        <div class="table">
            <div class="table-cell">
               <article class="caption">
        <img class="caption__media" src="https://static.wixstatic.com/media/14f61a_01c73c17f2b34e3ca468fe0673a90a57.jpg/v1/fill/w_200,h_150,al_c,q_90/14f61a_01c73c17f2b34e3ca468fe0673a90a57.jpg"style="height:200px;" position= absolute; top= 200px; />
        <div class="caption__overlay">
            <h1 class="caption__overlay__title">Bruschetta</h1>
            <p class="caption__overlay__content">
                Freshly diced tomatoes and basil paste on a crispy baked piece of bread.
Price: $4.99 for 4 pieces
            </p>
        </div>
    </article>
                </ul>
            </div>
        </div>
    </div>
</div>
<div class="square">
    <div class="content">
        <div class="table">
            <div class="table-cell">
               <article class="caption">
        <img class="caption__media" src="https://static.wixstatic.com/media/78c65b_c5c23a3106e34f49b67832a59e632ee7.jpg/v1/fill/w_748,h_369,al_c,q_90/78c65b_c5c23a3106e34f49b67832a59e632ee7.jpg"style="height:200px;" position= absolute; top= 200px; />
        <div class="caption__overlay">
            <h1 class="caption__overlay__title">Breadsticks</h1>
            <p class="caption__overlay__content">
                Freshly baked bread-sticks seasoned lightly with salt and garlic.
Price: FREE... Complementary with your entré.
            </p>
        </div>
    </article>
                </ul>
            </div>
        </div>
    </div>
</div>

<!-- 2nd row verticaly centered images in square columns -->

<div class="square">
    <div class="content">
        <div class="table">
            <div class="table-cell">
               <article class="caption">
        <img class="caption__media"...

CSS

@import url(http://fonts.googleapis.com/css?family=Lato:400,900);  /* <-- Just for the demo, Yes I like pretty fonts... */

.square {
    float:left;
    position: relative;
    width: 30%;
    padding-bottom : 30%; /* = width for a 1:1 aspect ratio */
    margin:1.6%;
    background-color:#1E1E1E;
    overflow:hidden;
}

.content {
    position:absolute;
    height:90%; /* = 100% - 2*5% padding */
    width:90%; /* = 100% - 2*5% padding */
    padding: 5%;
    
}
.table{
    display:table;
    width:100%;
    height:100%;
}
.table-cell{
    display:table-cell;
    vertical-align:middle;
}
/*  For list */
ul{
    text-align:left;
    margin:5% 0 0;
    padding:0;
    list-style-position:inside;
}
li{
    margin: 0 0 0 5%;
    padding:0;
}


/*  For responsive images */

.content .rs{
    width:auto;
    height:auto;
    max-height:90%;
    max-width:100%;
}
/*  For responsive images as background */

.bg{
    background-position:center center;
    background-repeat:no-repeat;
    background-size:cover; /* you change this to "contain" if you don't want the images to be cropped */
    color:#fff;
}

.img1{
    background-image: url('https://farm3.staticflickr.com/2827/10384422264_d9c7299146.jpg');
}
.img2{
    background-image: url('https://farm7.staticflickr.com/6217/6216951796_e50778255c.jpg');
}
.img3{
    background-image: url('https://farm4.staticflickr.com/3794/13893055574_3df0ab636b.jpg');
}

/*  following just for the demo */


body {
    font-size:20px;
    font-family: 'Lato',verdana, sans-serif;
    color: #fff;
    text-align:center;
    background:#ECECEC;
}
p{
    margin:0;
    padding:0;
    text-align:left;
}

.numbers{
    font-weight:900;
    font-size:100px;
}

#bottom {
    clear:both;
    margin:0 1.66%;
    width:89.68%;
    padding: 3.5%;
    background-color:#1E1E1E;
    color: #fff;
}
#bottom p{
    text-align:center;
    line-height:2em;
}
#bottom a{
    color: #000;
    text-decoration:none;
    border:1px solid #000;
    padding:10px...