Меню с эффектом масштабирования

Создать меню с эффектом масштабирования, используя чистый CSS, вдохновила меня операционная система Mac OSX.

Как работает данное меню?

Меню основано на линейном расположении активных элементов. Значки меню реагируют на наведение курсора мыши, увеличиваясь в размере, становясь более видимыми. Активный значок, который находится под указателем мыши, полностью расширяется, в то время как остальные значки находятся в уменьшенном состоянии.

HTML разметка и CSS код.

Это меню демонстрирует использование продвинутых CSS техник с использованием псевдокласса «hover» тега <li> и одноуровневого элемента «+». Данный селектор необходим для стилизации изображений навигационного меню.

Селектор «+» устанавливает особые правила на активные элементы навигационного меню.

Данное меню работает на следующих браузерах: Internet Explorer 7 + и 8 +, Firefox 3 +, Google Chrome, Safari 3.2 +, Opera 9.52 +, и Konqueror 3.5.7 +.

  1. Способ меню, при котором активный элемент расширяясь смещается вниз, неактивные остаются вверху.

HTML разметка.

<div>
<ul>
<li>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<!-- the image -->
<img src="/images/demos/w3c-valid-css-trans.png" />
<!-- the label -->
<span>Valid CSS</span>
</a>
</li>
<!-- make copies of <li>...</li> block to create more items ... -->
</ul>
</div>

CSS.

<style type="text/css">
<!--
.expand-down {
font-family:Arial, Helvetica, sans-serif;
line-height:normal;
margin-top:20px;
height:150px;
width:500px;
background: url(/images/demos/macosx-style-background.png) no-repeat;
margin-bottom:30px;
}
/* reset margins and paddings */
.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;  /* initial width of images, 50% of width */
height:50px; /* initial height of images, 50% of height */
border:none;
}
/* initially, don't show the label inside <span> tag */
.expand-down ul li a span {
display:none;
}
.expand-down ul li:hover a span {
/* show label on mouse hover */
display:block;
font-size:14px;
text-align:center;
color:#fff;
}
/* expand the image to 100% on mouse hover.
** an image becomes active when mouse hovers it
** ideally, the image should have same width and height as below
*/
.expand-down ul li:hover a img {
width:100px;
height:100px;
}
/* expand the image next to the right of the active image to 60% using + selector */
.expand-down ul li:hover + li a img {
width:60px;
height:60px;
}
/* expand the image second to the right of the active image to 55% using + selectors */
.expand-down ul li:hover + li + li a img {
width:55px;
height:55px;
}
-->
</style>

 

  1.    Способ меню, при котором активный элемент расширяясь смещается вверх, неактивные остаются внизу.

HTML разметка.

<div>
<ul>
<li>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<!-- label should appear on top of image so it comes first -->
<span>Valid CSS</span>
<!-- the image -->
<img src="/images/demos/w3c-valid-css-trans.png" />
</a>
</li>
<!-- add items by making copies of <li></li> block -->
</ul>
</div>

CSS.

<style type="text/css">
<!--
.expand-up {
font-family:Arial, Helvetica, sans-serif;
line-height:normal;
height:150px;
width:500px;
background: url(/images/demos/macosx-style-background.png) no-repeat;
overflow:visible;
margin-bottom:30px;
}
/* reset margins and paddings */
.expand-up * {
margin: 0;
padding: 0;
}
.expand-up ul {
margin-left:10px;
}
.expand-up ul li {
float:left;
list-style-type:none;
/* create a reserved space for expanded image to make this work in ie */
padding-top:65px;
/* margin to place the menu at the bottom */
margin-top:25px;
}
.expand-up ul li a {
text-decoration:none;
}
.expand-up ul li a img {
width:50px;  /* initial width of images, 50% of width */
height:50px; /* initial height of images, 50% of height */
border:none;
}
/* initially, don't show the label inside <span> tag */
.expand-up ul li a span {
display:none;
}
.expand-up ul li:hover a span {
/* show item label on mouse hover */
display:block;
font-size:14px;
text-align:center;
color:#fff;
/* move label up to move image up */
margin-top:-65px;
}
/* expand the image to 100% on mouse hover.
** again, ideal dimension of image is equal to width and height below
*/
.expand-up ul li:hover a img {
width:100px;
height:100px;
}
/* expand the image next to the right of active image to 60% using + selector */
.expand-up ul li:hover + li a img {
width:60px;
height:60px;
/* move image up by 10px so bottom aligns with other images */
margin-top:-10px;
}
/* expand the image second to the right of active image to 55% using + selectors */
.expand-up ul li:hover + li + li a img {
width:55px;
height:55px;
/* move image up by 5px so bottom aligns with the other items */
margin-top:-5px;
}
-->
</style>

 

 Демо

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.