Responsive Hexagon Grid Layout Using HTML CSS

Responsive Hexagon Grid Layout Using HTML CSS
Code Snippet:CSS responsive grid of hexagons
Author: web-tiki
Published: 2 weeks ago
Last Updated: September 8, 2025
Downloads: 41
License: MIT
Edit Code online: View on CodePen
Read More

This tutorial will guide you through creating a responsive hexagon grid layout using HTML and CSS. This technique is useful for visually appealing presentations of various data, including images and text, and is especially effective when aiming for a modern and unique design.

Step 1: Include Header Assets

First, add these lines within the <head> section of your HTML document to link necessary fonts from Google Fonts:

<link href='https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,800italic,400,700,800' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Raleway:400,700,300,200,100,900' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Amatic+SC:400,700' rel='stylesheet' type='text/css'>

Step 2: Create the HTML Structure

Next, create the main HTML structure for your hexagon grid. This uses an unordered list (<ul>) for the layout, with list items (<li>) representing each hexagon. The pusher class is used to adjust spacing.

<ul id="categories" class="clr">
  <li class="pusher"></li>
	<li>
      <div>
        <img src="https://farm3.staticflickr.com/2878/10944255073_973d2cd25c.jpg" alt=""/>
        <h1>This is a title a bit longer</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
    <li>
      <div>
        <img src="https://farm9.staticflickr.com/8461/8048823381_0fbc2d8efb.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm5.staticflickr.com/4144/5053682635_b348b24698.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm3.staticflickr.com/2827/10384422264_d9c7299146.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6217/6216951796_e50778255c.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li><li>
      <div>
        <img src="https://farm4.staticflickr.com/3766/12953056854_b8cdf14f21.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6139/5986939269_10721b8017.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3165/5733278274_2626612c70.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7163/6822904141_50277565c3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3771/13199704015_72aa535bd7.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  	<li>
      <div>
        <img src="https://farm3.staticflickr.com/2878/10944255073_973d2cd25c.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
    <li>
      <div>
        <img src="https://farm9.staticflickr.com/8461/8048823381_0fbc2d8efb.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm5.staticflickr.com/4144/5053682635_b348b24698.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm3.staticflickr.com/2827/10384422264_d9c7299146.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6217/6216951796_e50778255c.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3766/12953056854_b8cdf14f21.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  	<li>
      <div>
        <img src="https://farm3.staticflickr.com/2878/10944255073_973d2cd25c.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
    <li>
      <div>
        <img src="https://farm9.staticflickr.com/8461/8048823381_0fbc2d8efb.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm5.staticflickr.com/4144/5053682635_b348b24698.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm3.staticflickr.com/2827/10384422264_d9c7299146.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6217/6216951796_e50778255c.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3766/12953056854_b8cdf14f21.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6139/5986939269_10721b8017.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3165/5733278274_2626612c70.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7163/6822904141_50277565c3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3771/13199704015_72aa535bd7.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6139/5986939269_10721b8017.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3165/5733278274_2626612c70.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7163/6822904141_50277565c3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm4.staticflickr.com/3771/13199704015_72aa535bd7.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li>
      <div>
        <img src="https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
  <li class="pusher"></li>
  <li>
      <div>
        <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" alt=""/>
        <h1>This is a title</h1>
        <p>Some sample text about the article this hexagon leads to</p>
    </div>
  </li>
</ul>
<a id="fork" target="_blank" href="https://github.com/web-tiki/responsive-grid-of-hexagons">Fork on GitHub</a>

Step 3: Add CSS Styling

Now, style your hexagon grid using CSS. The CSS below handles the hexagon shape, layout, and responsive behavior. Key properties like transform, skewY, and pseudo-elements are used to create the hexagon effect and maintain the grid structure.

body{
  font-family: 'Open Sans', arial, sans-serif;
  background:rgb(123, 158, 158);

}
*{
  margin:0;
  padding:0;
}
#categories{
  overflow:hidden;
  width:90%;
  margin:0 auto;
}
.clr:after{
  content:"";
  display:block;
  clear:both;
}
#categories li{
  position:relative;
  list-style-type:none;
  width:27.85714285714286%; /* = (100-2.5) / 3.5 */
  padding-bottom: 32.16760145166612%; /* =  width /0.866 */
  float:left;
  overflow:hidden;
  visibility:hidden;
 
  -webkit-transform: rotate(-60deg) skewY(30deg);
  -ms-transform: rotate(-60deg) skewY(30deg);
  transform: rotate(-60deg) skewY(30deg);
}
#categories li:nth-child(3n+2){
  margin:0 1%;
}
#categories li:nth-child(6n+4){
  margin-left:0.5%;
}
#categories li:nth-child(6n+4), #categories li:nth-child(6n+5), #categories li:nth-child(6n+6) {
	margin-top: -6.9285714285%;
  margin-bottom: -6.9285714285%;
  
  -webkit-transform: translateX(50%) rotate(-60deg) skewY(30deg);
  -ms-transform: translateX(50%) rotate(-60deg) skewY(30deg);
  transform: translateX(50%) rotate(-60deg) skewY(30deg);
}
#categories li:nth-child(6n+4):last-child, #categories li:nth-child(6n+5):last-child, #categories li:nth-child(6n+6):last-child{
  margin-bottom:0%;
}
#categories li *{
  position:absolute;
  visibility:visible;
}
#categories li > div{
  width:100%;
  height:100%;
  text-align:center;
  color:#fff;
  overflow:hidden;
  
  -webkit-transform: skewY(-30deg) rotate(60deg);
  -ms-transform: skewY(-30deg) rotate(60deg);
  transform: skewY(-30deg) rotate(60deg);
  
	-webkit-backface-visibility:hidden;
  
}

/* HEX CONTENT */
#categories li img{
  left:-100%; right:-100%;
  width: auto; height:100%;
  margin:0 auto;   
}

#categories div h1, #categories div p{
  width:90%;
  padding:0 5%;
  background-color:#008080; background-color: rgba(0, 128, 128, 0.8);
  font-family: 'Raleway', sans-serif;
  
  -webkit-transition: top .2s ease-out, bottom .2s ease-out, .2s padding .2s ease-out;
  -ms-transition: top .2s ease-out, bottom .2s ease-out, .2s padding .2s ease-out;
  transition: top .2s ease-out, bottom .2s ease-out, .2s padding .2s ease-out;
}
#categories li h1{
  bottom:110%;
  font-style:italic;
  font-weight:normal;
  font-size:1.5em;
  padding-top:100%;
  padding-bottom:100%;
}
#categories li h1:after{
	content:'';
  display:block;
  position:absolute;
  bottom:-1px; left:45%;
  width:10%;
  text-align:center;
  z-index:1;
  border-bottom:2px solid #fff;
}
#categories li p{
	padding-top:50%;
	top:110%;
	padding-bottom:50%;
}


/* HOVER EFFECT  */

#categories li div:hover h1 {
  bottom:50%;
  padding-bottom:10%;
}

#categories li div:hover p{
  top:50%;
  padding-top:10%;
}
#fork{
  position:fixed;
  top:0;
  left:0;
  color:#000;
  text-decoration:none;
  border:1px solid #000;
  padding:.5em .7em;
  margin:1%;
  transition: color .5s;
  overflow:hidden;
}
#fork:before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 130%; height: 100%;
  background: #000;
  z-index: -1;
  transform-origin:0 0 ;
  transform:translateX(-100%) skewX(-45deg);
  transition: transform .5s;
}
#fork:hover {
  color: #fff;
}
#fork:hover:before {
  transform: translateX(0) skewX(-45deg);
}

Congratulations! You’ve successfully created a responsive hexagon grid layout using HTML and CSS.

Related posts:

Loading... ...

Loading preview...

Device: Desktop
Dimensions: 1200x800
Lines: 0 Characters: 0 Ln 1, Ch 1

Leave a Comment

About W3Frontend

W3Frontend provides free, open-source web design code and scripts to help developers and designers build faster. Every snippet is reviewed before publishing for quality. Learn more.