Навигационное меню с визуальным эффектом на CSS3

В данном уроке мы сделаем навигационное меню с интересным визуальным эффектом используя только CSS. Будут представлены одноуровневый вариант и выпадающая структура. Для создания эффекта будет применяться псевдо-элемент :after с пользовательским атрибутом.

Примечание: меню полноценно работает в браузерах, поддерживающих CSS3.

Для меню используется типовая разметка:

	<nav class="ph-lift">
		<ul>
			<li class="active"><a href="#home" data-title="Основное">Главная</a></li>
			<li><a href="#portfolio" data-title="Это сделал я">Мои работы</a></li>
			<li><a href="#about" data-title="Любопытствуете?">Кто я?</a></li>
			<li><a href="#contact" data-title="Напишите мне">Контакт</a></li>
		<ul>
	</nav>	


Обратите внимание, что к каждой ссылке добавлен атрибут data-title, содержащий текст заголовка.

Идея заключается в формировании элемента li со свойством overflow:hidden. Первая часть эффекта при наведении курсора мыши будет заключаться в смене цвета фона и добавлении внутренней тени с плавным переходом.

nav.ph-lift ul li {
    float: left;
    height: 90px;
    line-height: 90px;
    background: white;
    overflow: hidden;
    transition: all.6s ease; }
    nav.ph-lift ul li:hover {
      box-shadow: 0 0 15px rgba(0, 0, 0, 0.3) inset;
      background: teal; }


С помощью псевдо-элемента :after генерируется "копия" ссылки, которая позиционируется ниже оригинала. Для содержания псевдо-элемента (свойство content) используем атрибут data-title. При наведении курсора мыши ссылка меняет значение свойства margin-top (с применение плавного перехода).

nav.ph-lift ul li a {
  display: block;
  text-decoration: none;
  color: #007e7e;
  padding: 0 45px;
  margin-top: 0;
  transition: all.6s ease; }
nav.ph-lift ul li:hover a {
  margin-top: -90px;
  color: white;
  text-shadow: 0 1px 2px  black; }
  nav.ph-lift ul li a:after {
    content: attr(data-title);
    display: block; }

В случае выпадающего меню мы не можем использовать для элемента  li свойство {overflow:hidden}. Поэтому изменим разметку:

	<nav class="ph-lift1">
		<ul>
			<li class="active"><a href="#home" data-title="Основное"><span data-title="Основное">Главная</span></a>
				<ul>
					<li><a href="#" ><span data-title="Самое-самое...">Выделенное</span></a></li>
					<li><a href="#" ><span data-title="Особенно нравится">Лучшие 10</span></a></li>
				</ul>
			</li>
			
			<li><a href="#portfolio" ><span data-title="Это сделал я">Мои работы</span></a>
				<ul>
					<li><a href="#" ><span data-title="Для сайта">Веб дизайн</span></a></li>
					<li><a href="#" ><span data-title="Рисование">Иллюстрации</span></a></li>
					<li><a href="#" ><span data-title="Для фона">Шаблоны</span></a></li>
				</ul>
				
			</li>
			<li><a href="#" ><span data-title="Хотите узнать?">Кто я?</span></a>
				
			</li>
			<li><a href="#" ><span data-title="Свяжитесь со мной">Контакт</span></a>
				<ul>
					<li><a href="#" ><span data-title="Написать мне">Email</span></a></li>
					<li><a href="#about" ><span data-title="Позвонить мне">Skype</span></a></li>
				</ul>
			</li>
		<ul>
	</nav>

Основная идея формирования эффекта остается той же. Теперь свойство overflow:hidden для элемента a, а псевдо-элемнет генерируется для элемента span.

nav.ph-lift1 > ul > li {
   float: left; }
 nav.ph-lift1 ul li {
   height: 80px;
   line-height: 80px;
   background: white;
   -webkit-transition: all.6s ease;
   -moz-transition: all.6s ease;
   -o-transition: all.6s ease;
   -ms-transition: all.6s ease;
   transition: all.6s ease; }
   nav.ph-lift1 ul li ul {
     max-height: 0;
     -webkit-transition: all.6s ease;
     -moz-transition: all.6s ease;
     overflow: hidden;
     display: block; }
   nav.ph-lift1 ul li:hover {
     box-shadow: 0 0 15px rgba(0, 0, 0, 0.3) inset;
     background: darkolivegreen; }
   nav.ph-lift1 ul li:hover ul {
     max-height: 300px; }
   nav.ph-lift1 ul li a {
     display: block;
     overflow: hidden;
     text-decoration: none;
     color: #546a2f;
     height: 80px; }
   nav.ph-lift1 ul li ul li a {
     color: #7e7e00; }
   nav.ph-lift1 ul li ul li:hover {
     background: olive; }
   nav.ph-lift1 ul li a span {
       -webkit-transition: all.6s ease;
       -moz-transition: all.6s ease;
       -o-transition: all.6s ease;
       -ms-transition: all.6s ease;
       transition: all.6s ease;
       display: block;
       padding: 0 40px; }
   nav.ph-lift1 ul li:hover > a span {
     margin-top: -80px;
     color: white;
     text-shadow: 0 1px 2px  black; }
     nav.ph-lift1 ul li a span:after {
       content: attr(data-title);
       display: block; }

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/Sh8QQ-nyce0/lessons.php

Читать комменты и комментировать

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



Защитный код
Обновить

Навигационное меню с визуальным эффектом на CSS3 | | 2012-09-25 21:37:56 | | Статьи Web-мастеру | | В данном уроке мы сделаем навигационное меню с интересным визуальным эффектом используя только CSS. Будут представлены одноуровневый вариант и выпадающая структура. Для создания эффекта будет | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: