A 3D grid of hexagon tiles with a hover/click.
inspired by (http://aprilzero.com/explorer/august-2014/)
A Pen by Richard Max on CodePen.
A 3D grid of hexagon tiles with a hover/click.
inspired by (http://aprilzero.com/explorer/august-2014/)
A Pen by Richard Max on CodePen.
<div class="container"> | |
<div class="honeycomb "> | |
<div class="hexes-1 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-2 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-3 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-4 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-5 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-6 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-7 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-8 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-9 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-10 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-11 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-12 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-13 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-14 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="hexes-13 column"> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
<a class="hex"> | |
<div class="wrapper"> | |
<div class="hexagon color-1"></div> | |
</div> | |
<span class="content"> | |
<strong>Hello!</strong> | |
<small>i'm a hexagon</small> | |
</span> | |
</a> | |
</div> | |
<div class="shadows"></div> | |
</div> | |
</div> |
@import "compass/css3"; | |
body { | |
background-color: #171d25; | |
} | |
.container { | |
position: relative; | |
@include transition(all .3s ease-out); | |
height: 500px; | |
@include perspective(700px); | |
z-index: 10; | |
overflow: hidden; | |
.honeycomb { | |
display: block; | |
position: absolute; | |
margin-left: -465px; | |
padding-left: 18px; | |
left: 50%; | |
text-align: center; | |
height: 450px; | |
width: 930px; | |
@include transform(rotateX(45deg) rotateY(0deg)); | |
@include transform-style(preserve-3d); | |
@include transform-origin( center, 65%); | |
z-index: 5; | |
.column { | |
display: block; | |
float: left; | |
width: 62px; | |
transform-style: preserve-3d; | |
&:nth-child(odd) { | |
margin-top: 36px; | |
} | |
} | |
.hex { | |
display: block; | |
position: relative; | |
float: left; | |
margin: 0; | |
height: 72px; | |
width: 62px; | |
color: #fff; | |
cursor: pointer; | |
text-decoration: none; | |
@include transform-style(preserve-3d); | |
@include transition(all .3s ease-out); | |
@include opacity(0.5); | |
&:hover { | |
opacity: 1; | |
@include transform(translateZ(20px)); | |
@include transition-duration(200ms); | |
.content { | |
@include opacity(1); | |
@include transform(rotateX(-90deg) translateZ(-40px) translateY(-50px)); | |
} | |
} | |
.wrapper { | |
display: block; | |
position: absolute; | |
top: 0; | |
left: 0; | |
height: 100%; | |
width: 100%; | |
.color-1 { | |
background: #ffbc06; | |
&:before { | |
border-right-color: #ffbc06; | |
} | |
&:after { | |
border-left-color: #ffbc06; | |
} | |
} | |
} | |
.content { | |
display: block; | |
position: absolute; | |
top: 0; | |
left: -80px; | |
text-align: center; | |
width: 200px; | |
@include opacity(0); | |
@include transition(all .3s ease-out .1s); | |
@include transform(rotateX(-90deg) translateZ(-40px) translateY(-40px)); | |
pointer-events: none; | |
-webkit-font-smoothing: antialiased; | |
strong { | |
display: block; | |
font: 600 26px/1.1 verdana,sans-serif; | |
overflow: hidden; | |
text-overflow: ellipsis; | |
white-space: nowrap; | |
text-shadow: -1px -1px 2px rgba(0,0,0,0.8); | |
} | |
small { | |
display: block; | |
font: 15px/1.1 verdana,sans-serif; | |
} | |
} | |
} | |
.shadows { | |
display: block; | |
position: absolute; | |
top: -15%; | |
left: -15%; | |
height: 130%; | |
width: 130%; | |
@include background-image(radial-gradient(closest-side, rgba(23,29,37,0), #171d25)); | |
@include opacity(0.9); | |
@include transform(translateZ(10px)); | |
pointer-events: none; | |
} | |
} | |
} | |
.hexagon { | |
display: block; | |
position: absolute; | |
width: 36px; | |
height: 62px; | |
background-color: #ffffff; | |
&:before, | |
&:after { | |
content: ""; | |
position: relative; | |
float: left; | |
border-top: 31px solid transparent; | |
border-bottom: 31px solid transparent; | |
} | |
&:before { | |
border-right: 18px solid #ffffff; | |
left: -18px; | |
} | |
&:after { | |
border-left: 18px solid #ffffff; | |
right: -18px; | |
} | |
} | |
.hidden { | |
display: none; | |
} |