JSFiddle - React, Tailwind, and code Playground

by tenold

HTML

<div class="box-container cf">
    <div class="column">
        <div class="box span-1x2">0</div>
    </div>
    <div class="column">
        <div class="box span-1x1">1</div>
        <div class="box span-1x1">2</div>
    </div>
    <div class="column">
        <div class="box span-2x2">3</div>
    </div>
</div>

CSS

.box-container {
    width: 240px;
    margin-bottom: 50px;
    background: blue;
}

.column {
    float:left;
}

.box {
    margin-bottom: 10px;
    margin-right: 10px;
    background: red;
}

.span-1x1 {
    width: 50px;
    height: 50px;
}

.span-1x2 {
    width: 50px;
    height: 110px;
}

.span-2x1 {
    width: 110px;
    height: 50px;
}

.span-2x2 {
    width: 110px;
    height: 110px;
}

/**
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    contenteditable attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that are clearfixed.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */
.cf:before,
.cf:after {
    content: " "; /* 1 */
    display: table; /* 2 */
}

.cf:after {
    clear: both;
}

/**
 * For IE 6/7 only
 * Include this rule to trigger hasLayout and contain floats.
 */
.cf {
    *zoom: 1;
}