Search code examples
cssresponsive-designhexagonal-tiles

Resposnive centred hexagon honeycombe layout in specific order


I'm trying to create some hexagonal blocks with content in a specific layout. I have four block starting with one block at the top followed by a row of two then finishing with a row of one as depicted in the image below. The problem I have had with all the demo's i've found on the interweb is that the <li> uses float:left. I tried using display:inline-block and display:inline but neither worked. I also need it to be responsive so that the blocks go into rows of one on iPad portrait and below. Does anyone know of a solution to this problem or do I need to call the A-Team?

http://tandsdev.co.uk/_testing/hexagan_layout.png


Solution

  • I have implements below code, you can try

    body{
      font-family: 'Open Sans', arial, sans-serif;
      background:#fff;
    
    }
    *{
      margin:0;
      padding:0;
    }
    #categories{
      overflow:hidden;
      width:100%;   /* you can change the width here */
      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;
      background: #000;
      -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%;
    }
    #categories li h1{
    /*  bottom:110%;  */
      font-style:italic;
      font-weight:normal;
      font-size:1.5em;
      padding-top:50%;
      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:10%;
        padding-bottom:50%;
    }
    
    
    /* HOVER EFFECT  */
    
    #categories li div:hover h1 {
    
    }
    
    #categories li div:hover p{
    
    }
    
    </style>
    
    
    
    
    <ul id="categories" class="clr">
      <li class="pusher"></li>
        <li>
    
          <div>
            <h1>Lorem Ipsum is simply</h1>
            <p>There are many variations of passages of Lorem Ipsum available</p>
        </div>
      </li>
       <li class="pusher"></li>
        <li>
       <div>
            <h1>Lorem Ipsum is simply</h1>
            <p>There are many variations of passages of Lorem Ipsum available</p>
        </div>
      </li>
      <li>
       <div>
            <h1>Lorem Ipsum is simply</h1>
            <p>There are many variations of passages of Lorem Ipsum available</p>
        </div>
      </li>
       <li class="pusher"></li> <li class="pusher"></li>
         <li>
           <div>
            <h1>Lorem Ipsum is simply</h1>
            <p>There are many variations of passages of Lorem Ipsum available</p>
        </div>
      </li>
    
    
    
    </ul>