Author: | the-mo |
---|---|
Views Total: | 20,478 views |
Official Page: | Go to website |
Last Update: | August 25, 2014 |
License: | MIT |
Preview:

Description:
A 3D hexagon(honeycomb) grid layout with cool hover effects, built on top of CSS3 transitions and transforms. Created by the-mo.
How to use it:
Create the Html for a hexagon grid layout.
<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-n column"> ... </div> <div class="shadows"></div> </div> </div>
The required CSS/CSS3 styles.
.container { position: relative; -webkit-transition: all 0.3s ease-out; transition: all 0.3s ease-out; height: 500px; -webkit-perspective: 700px; perspective: 700px; z-index: 10; overflow: hidden; } .container .honeycomb { display: block; position: absolute; margin-left: -465px; padding-left: 18px; left: 50%; text-align: center; height: 450px; width: 930px; -ms-transform: rotateX(45deg) rotateY(0deg); -webkit-transform: rotateX(45deg) rotateY(0deg); transform: rotateX(45deg) rotateY(0deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -ms-transform-origin: center 65%; -webkit-transform-origin: center 65%; transform-origin: center 65%; z-index: 5; } .container .honeycomb .column { display: block; float: left; width: 62px; } .container .honeycomb .column:nth-child(odd) { margin-top: 36px; } .container .honeycomb .hex { display: block; position: relative; float: left; margin: 0; height: 72px; width: 62px; color: #fff; cursor: pointer; text-decoration: none; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transition: all 0.3s ease-out; transition: all 0.3s ease-out; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); opacity: 0.5; } .container .honeycomb .hex:hover { opacity: 1; -ms-transform: translateZ(20px); -webkit-transform: translateZ(20px); transform: translateZ(20px); -webkit-transition-duration: 200ms; transition-duration: 200ms; } .container .honeycomb .hex:hover .content { filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); opacity: 1; -ms-transform: rotateX(-90deg) translateZ(-40px) translateY(-50px); -webkit-transform: rotateX(-90deg) translateZ(-40px) translateY(-50px); transform: rotateX(-90deg) translateZ(-40px) translateY(-50px); } .container .honeycomb .hex .wrapper { display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; } .container .honeycomb .hex .wrapper .color-1 { background: #ffbc06; } .container .honeycomb .hex .wrapper .color-1:before { border-right-color: #ffbc06; } .container .honeycomb .hex .wrapper .color-1:after { border-left-color: #ffbc06; } .container .honeycomb .hex .content { display: block; position: absolute; top: 0; left: -80px; text-align: center; width: 200px; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); opacity: 0; -moz-transition: all 0.3s ease-out 0.1s; -o-transition: all 0.3s ease-out 0.1s; -webkit-transition: all 0.3s ease-out; -webkit-transition-delay: 0.1s; -webkit-transition: all 0.3s ease-out 0.1s; transition: all 0.3s ease-out 0.1s; -ms-transform: rotateX(-90deg) translateZ(-40px) translateY(-40px); -webkit-transform: rotateX(-90deg) translateZ(-40px) translateY(-40px); transform: rotateX(-90deg) translateZ(-40px) translateY(-40px); pointer-events: none; -webkit-font-smoothing: antialiased; } .container .honeycomb .hex .content 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); } .container .honeycomb .hex .content small { display: block; font: 15px/1.1 verdana, sans-serif; } .container .honeycomb .shadows { display: block; position: absolute; top: -15%; left: -15%; height: 130%; width: 130%; background-image: -webkit-radial-gradient(closest-side, rgba(23, 29, 37, 0), #171d25); background-image: radial-gradient(closest-side, rgba(23, 29, 37, 0), #171d25); filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90); opacity: 0.9; -ms-transform: translateZ(10px); -webkit-transform: translateZ(10px); transform: translateZ(10px); pointer-events: none; } .hexagon { display: block; position: absolute; width: 36px; height: 62px; background-color: #ffffff; } .hexagon:before, .hexagon:after { content: ""; position: relative; float: left; border-top: 31px solid transparent; border-bottom: 31px solid transparent; } .hexagon:before { border-right: 18px solid #ffffff; left: -18px; } .hexagon:after { border-left: 18px solid #ffffff; right: -18px; } .hidden { display: none; }
if i want to put a background image? can i?