<!doctype html>
<style>
body {
--peek: LightGreen;
}
.bg {
background-color: var(--peek);
background-image: linear-gradient(45deg, orange 0px, orange 10px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 220px, blue 220px);
background-repeat: no-repeat;
background-size: 50px 230px;
}
main * {
box-sizing: border-box;
}
.td {
width: 50px;
height: 50px;
position:absolute;
border: 4px solid black;
}
</style>
<main>
<div style="position: relative;border: 10px solid yellow; width:290px; height: 290px">
<!-- row 1 -->
<div class="td bg" style="top:20px;left:20px;height:230px"></div>
<div class="td bg" style="top:20px;left:80px;"></div>
<div class="td" style="top:20px; left: 140px;"></div>
<div class="td" style="top:20px; left: 200px;"></div>
<!-- row 2
additional -4 offsets on background-position are for borders.
columns do not have borders.
-->
<div class="td bg" style="top:80px;left:80px;width:110px;height:110px;background-position-y:-64px;background-position-x:-4px"></div>
<div class="td" style="top:80px; left: 200px;"></div>
<!-- row 3 -->
<div class="td" style="top:140px; left: 200px;"></div>
<!-- row 4 -->
<div class="td bg" style="top:200px;left:80px;background-position-y:-180px"></div>
<div class="td" style="top:200px; left: 140px;"></div>
<div class="td" style="top:200px; left: 200px;"></div>
</div>
</main>