Отличный урок, в котором Вы узнаете как сделать красивое и адаптивное меню на CSS с поддержкой Ретина экранов.
Код
/* Global CSS that are applied for all screen sizes */
.nav ul { max-width: 1240px; margin: 0; padding: 0; list-style: none; font-size: 1.5em; font-weight: 300; }
.nav li span { display: block; }
.nav a { display: block; color: rgba(249, 249, 249, .9);
text-decoration: none; transition: color .5s, background .5s, height .5s; }
.nav i{ /* Make the font smoother for Chrome */
transform: translate3d(0, 0, 0); }
/* Remove the blue Webkit background when element is tapped */
a, button { -webkit-tap-highlight-color: rgba(0,0,0,0); }
/* Hover effect for the whole navigation to make the hovered item stand out */
.no-touch .nav ul:hover a { color: rgba(249, 249, 249, .5); }
.no-touch .nav ul:hover a:hover { color: rgba(249, 249, 249, 0.99); }
.nav li:nth-child(6n+1) { background: rgb(208, 101, 3); }
.nav li:nth-child(6n+2) { background: rgb(233, 147, 26); }
.nav li:nth-child(6n+3) { background: rgb(22, 145, 190); }
.nav li:nth-child(6n+4) { background: rgb(22, 107, 162); }
.nav li:nth-child(6n+5) { background: rgb(27, 54, 71); }
.nav li:nth-child(6n+6) { background: rgb(21, 40, 54); }
@media (min-width: 50em) {
/* Transforms the list into a horizontal navigation */
.nav li { float: left; width: 16.66666666666667%; text-align: center; transition: border .5s; }
.nav a { display: block; width: auto; }
/* hover, focused and active effects that add a little colored border to the different items */
.no-touch .nav li:nth-child(6n+1) a:hover,
.no-touch .nav li:nth-child(6n+1) a:active,
.no-touch .nav li:nth-child(6n+1) a:focus { border-bottom: 4px solid rgb(174, 78, 1); }
.no-touch .nav li:nth-child(6n+2) a:hover,
.no-touch .nav li:nth-child(6n+2) a:active,
.no-touch .nav li:nth-child(6n+2) a:focus { border-bottom: 4px solid rgb(191, 117, 20); }
.no-touch .nav li:nth-child(6n+3) a:hover,
.no-touch .nav li:nth-child(6n+3) a:active,
.no-touch .nav li:nth-child(6n+3) a:focus { border-bottom: 4px solid rgb(12, 110, 149); }
.no-touch .nav li:nth-child(6n+4) a:hover,
.no-touch .nav li:nth-child(6n+4) a:active,
.no-touch .nav li:nth-child(6n+4) a:focus { border-bottom: 4px solid rgb(10, 75, 117); }
.no-touch .nav li:nth-child(6n+5) a:hover,
.no-touch .nav li:nth-child(6n+5) a:active,
.no-touch .nav li:nth-child(6n+5) a:focus { border-bottom: 4px solid rgb(16, 34, 44); }
.no-touch .nav li:nth-child(6n+6) a:hover,
.no-touch .nav li:nth-child(6n+6) a:active,
.no-touch .nav li:nth-child(6n+6) a:focus { border-bottom: 4px solid rgb(9, 18, 25); }
/* Placing the icon */
.icon { padding-top: 1.4em; }
.icon + span { margin-top: 2.1em; transition: margin .5s; }
/* Animating the height of the element*/
.nav a { height: 9em; }
.no-touch .nav a:hover ,
.no-touch .nav a:active ,
.no-touch .nav a:focus { height: 10em; }
/* Making the text follow the height animation */
.no-touch .nav a:hover .icon + span { margin-top: 3.2em; transition: margin .5s; }
/* Positioning the icons and preparing for the animation*/
.nav i { position: relative; display: inline-block; margin: 0 auto; padding: 0.4em; border-radius: 50%; font-size: 1.8em; box-shadow: 0 0 0 0.8em transparent; background: rgba(255,255,255,0.1); transform: translate3d(0, 0, 0); transition: box-shadow .6s ease-in-out; }
/* Animate the box-shadow to create the effect */
.no-touch .nav a:hover i,
.no-touch .nav a:active i,
.no-touch .nav a:focus i { box-shadow: 0 0 0px 0px rgba(255,255,255,0.2); transition: box-shadow .4s ease-in-out; }
}
@media (min-width: 50em) and (max-width: 61.250em) {
/* Size and font adjustments to make it fit better */
.nav ul { font-size: 1.2em; }
}
/* The "tablet" and "mobile" version */
@media (max-width: 49.938em) {
/* Instead of adding a border, we transition the background color */
.no-touch .nav ul li:nth-child(6n+1) a:hover,
.no-touch .nav ul li:nth-child(6n+1) a:active,
.no-touch .nav ul li:nth-child(6n+1) a:focus { background: rgb(227, 119, 20); }
.no-touch .nav li:nth-child(6n+2) a:hover,
.no-touch .nav li:nth-child(6n+2) a:active,
.no-touch .nav li:nth-child(6n+2) a:focus { background: rgb(245, 160, 41); }
.no-touch .nav li:nth-child(6n+3) a:hover,
.no-touch .nav li:nth-child(6n+3) a:active,
.no-touch .nav li:nth-child(6n+3) a:focus { background: rgb(44, 168, 219); }
.no-touch .nav li:nth-child(6n+4) a:hover,
.no-touch .nav li:nth-child(6n+4) a:active,
.no-touch .nav li:nth-child(6n+4) a:focus { background: rgb(31, 120, 176); }
.no-touch .nav li:nth-child(6n+5) a:hover,
.no-touch .nav li:nth-child(6n+5) a:active,
.no-touch .nav li:nth-child(6n+5) a:focus { background: rgb(39, 70, 90); }
.no-touch .nav li:nth-child(6n+6) a:hover,
.no-touch .nav li:nth-child(6n+6) a:active,
.no-touch .nav li:nth-child(6n+6) a:focus { background: rgb(32, 54, 68); }
.nav ul li { transition: background 0.5s; }
}
/* CSS for a 2x3 columns version */
@media (min-width: 32.5em) and (max-width: 49.938em) {
/* Creating the 2 column layout using floating elements once again */
.nav li { display: block; float: left; width: 50%; }
/* Adding some padding to make the elements look nicer*/
.nav a { padding: 0.8em; }
/* Displaying the icons on the left, and the text on the right side using inline-block */
.nav li span,
.nav li span.icon { display: inline-block; }
.nav li span.icon { width: 50%; }
.nav li .icon + span { font-size: 1em; }
.icon + span { position: relative; top: -0.2em; }
/* Adapting the icons to animate the size and border of the rounded background in a more discreet way */
.nav li i { display: inline-block; padding: 8% 9%; border: 4px solid transparent; border-radius: 50%; font-size: 1.5em; background: rgba(255,255,255,0.1); transition: border .5s; }
/* Transition effect on the border color */
.no-touch .nav li:hover i,
.no-touch .nav li:active i,
.no-touch .nav li:focus i { border: 4px solid rgba(255,255,255,0.1); }
}
/* Adapting the font size and width for smaller screns*/
@media (min-width: 32.5em) and (max-width: 38.688em) {
.nav li span.icon { width: 50%; }
.nav li .icon + span { font-size: 0.9em; }
}
/* Styling the toggle menu link and hiding it */
.nav .navtoogle{ display: none; width: 100%; padding: 0.5em 0.5em 0.8em; font-family: 'Lato',Calibri,Arial,sans-serif; font-weight: normal; text-align: left; color: rgb(7, 16, 15); font-size: 1.2em; background: none; border: none; border-bottom: 4px solid rgb(221, 221, 221); cursor: pointer; }
.navtoogle i{ z-index:-1; }
.icon-menu { position: relative; top: 3px; line-height: 0; font-size: 1.6em; }
@media (max-width: 32.438em) {
/* Unhiding the styled menu link */
.nav .navtoogle{ margin: 0; display: block; }
/* Animating the height of the navigation when the button is clicked */
/* If JavaScript is disabled, the menu stays open */
.no-js .nav ul { max-height: 30em; overflow: hidden; }
/* When JavaScript is enabled, we hide the menu */
.js .nav ul { max-height: 0em; overflow: hidden; }
/* Displaying the menu when the user has clicked on the button */
.js .nav .active + ul { max-height: 30em; overflow: hidden; transition: max-height .4s; }
/* Adapting the layout of the menu for smaller screens: icon on the left and text on the right */
.nav li span { display: inline-block; height: 100%; }
.nav a { padding: 0.5em; }
.icon + span { margin-left: 1em; font-size: 0.8em; }
/* Adding a left border of 8 px with a different color for each menu item*/
.nav li:nth-child(6n+1) { border-left: 8px solid rgb(174, 78, 1); }
.nav li:nth-child(6n+2) { border-left: 8px solid rgb(191, 117, 20); }
.nav li:nth-child(6n+3) { border-left: 8px solid rgb(13, 111, 150); }
.nav li:nth-child(6n+4) { border-left: 8px solid rgb(10, 75, 117); }
.nav li:nth-child(6n+5) { border-left: 8px solid rgb(16, 34, 44); }
.nav li:nth-child(6n+6) { border-left: 8px solid rgb(9, 18, 25); }
/* make the nav bigger on touch screens */
.touch .nav a { padding: 0.8em; }
}
Загрузите на сайт скрипт «modernizr.custom.js».