CSS-меню в стиле Mac OS
Статья от 06.06.09 в категории CSS
Вы прошлых статьях было рассказано как сделать меню в стиле Mac OS используя Javascript, теперь сделаем примерно тоже самое используя исключительно HTML-разметку и CSS.
Основой для меню будет неупорядоченный список. Создадим две версии: расширяющееся кверху и книзу.

Для создания меню будем использовать псевдо-класс :hover на тег <li> и селектор “+” для изменения стилей пунка меню, находящихся справа.
HTML-разметка будет выглядеть так:
<div class="expand-down"> <!-- Для меню расширяющегося вверх используйте класс expand-up --> <ul> <li> <a href="http://jigsaw.w3.org/css-validator/check/referer"> <!-- image --> <img src="/images/demos/w3c-valid-css-trans.png" /> <!-- label --> <span>Valid CSS</span> </a> </li> <!-- копируйте <li>...</li> чтобы сделать больше элементов меню --> </ul> </div>
Меню, расширяющееся вниз

.expand-down { font-family:Arial, Helvetica, sans-serif; line-height:normal; margin-top:20px; height:150px; width:500px; background: url(/images/macosx-style-background.png) no-repeat; margin-bottom:30px; } .expand-down * { margin: 0; padding: 0; } .expand-down ul { padding-top:10px; margin-left:10px; } .expand-down ul li { float:left; list-style-type:none; } .expand-down ul li a { text-decoration:none; } .expand-down ul li a img { width:50px; /* начальная ширина изображения - 50% от его ширины */ height:50px; /* начальная высоты изображения - 50% от его высоты */ border:none; } .expand-down ul li a span { display:none; } .expand-down ul li:hover a span { display:block; font-size:14px; text-align:center; color:#fff; } .expand-down ul li:hover a img { width:100px; height:100px; } /* Увеличиваем пункт меню, стоящий первым справа от выбраного*/ .expand-down ul li:hover + li a img { width:60px; height:60px; } /* Увеличиваем пункт меню, стоящий вторым справа от выбраного*/ .expand-down ul li:hover + li + li a img { width:55px; height:55px; }
Меню, расширяющееся вверх

.expand-up { font-family:Arial, Helvetica, sans-serif; line-height:normal; height:150px; width:500px; background: url(/images/macosx-style-background.png) no-repeat; overflow:visible; margin-bottom:30px; } .expand-up * { margin: 0; padding: 0; } .expand-up ul { margin-left:10px; } .expand-up ul li { float:left; list-style-type:none; padding-top:65px; margin-top:25px; } .expand-up ul li a { text-decoration:none; } .expand-up ul li a img { width:50px; height:50px; border:none; } .expand-up ul li a span { display:none; } .expand-up ul li:hover a span { display:block; font-size:14px; text-align:center; color:#fff; margin-top:-65px; } .expand-up ul li:hover a img { width:100px; height:100px; } .expand-up ul li:hover + li a img { width:60px; height:60px; margin-top:-10px; } .expand-up ul li:hover + li + li a img { width:55px; height:55px; margin-top:-5px; }
Это меню работает в Internet Explorer 7 + и 8 +, Firefox 3 +, Google Chrome, Safari 3.2 +, Opera 9.52 + и Konqueror 3.5.7 +.
06/06/09 в 18:34
Чтоб работало в IE6, почитай:
06/06/09 в 19:57
Ну да, известное дело. Примерно так ещё png’хи фиксят, чтобы просвечали. Запишу в блокнотик, возможно когда-нибудь дополню пост.
26/07/09 в 4:08
Интересный пост, спасибо вам. Интересует только вопрос – будет ли продолжение? :)
31/03/10 в 0:41
Да. Не плохо было бы сделать плавную анимацию. А то глаз режет(