Creating 3d navigation buttons with CSS is not a difficult task, provided that we understand a basic principle: using outset
or inset
as values for the border-style
property leads to inconsistent results across browsers,
especially in Internet Explorer. So we have to find another way. Given that a 3d effect is an effect usually achieved on desktop
environments by using certain color combinations, we're going to follow the same approach here. Thus, given the following
markup:
<ul id="navigation"> <li><a href="#">Home</a></li> <li><a href="#">Articles</a></li> <li><a href="#">Portfolio</a></li> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> <li><a href="#">Sitemap</a></li> </ul>
we can add the following styles:
#navigation { margin: 0; padding: 0; list-style: none; background: #396; color: #fff; width: 100%; float: left; } #navigation li { float: left; height: 100%; padding: 0 0.5em; } #navigation li a:link, #navigation li a:visited { background: #4a7; border: 0.2em solid; border-color: #cec #464 #575 #dfd; color: #fff; padding: 0.1em 0.5em; text-decoration: none; font-weight: bold; float: left; height: 1.8em; line-height: 1.8; } #navigation li a:hover { background: #396; color: #fff; border-color: #575 #dfd #cec #464; }
The key aspect here are the different values given to the border-color
property: by combining different
border colors we can actually achieve the desired result by giving to our buttons the appearance of 3d images.
You can see the final result here.