Создаем стильное скользящее меню для сайта

668
8.4 из 10
Проголосовало: 5






Стильное скользящее горизонтальное меню для сайта с помощью CSS3.

Шаг 1. HTML
У нас будет блок с навигацией, в ней мы укажем ссылки и классы, кроме этого добавляем подписи для пунктов, кроме этого, скользящий блок будет разбит на несколько элементов, а именно на три, верх, средняя часть и нижняя. Все эти классы мы указываем в разметке заключенные в div.

Код
<nav id="menu">  
  <ul>  
  <li class="rocket"><a href="">Главная</a></li>  
  <li class="wine"><a href="">Алкоголь</a></li>  
  <li class="burger"><a href="">Еда</a></li>  
  <li class="comment"><a href="">Чат</a></li>  
  <li class="sport" ><a href="">Спорт</a></li>  
  <li class="earth"><a href="">Интернет</a></li>  
  <div class="current">  
  <div class="top-arrow"></div>  
  <div class="current-back"></div>  
  <div class="bottom-arrow"></div>  
  </div>  
  </ul>  
</nav>


С разметкой разобрались, здесь нет ничего сложного, давайте перейдем к следующему этапу, а именно стилизация.

Шаг 2. CSS
Теперь нам необходимо определить все стили для меню, так как у нас не будет JS всю анимацию мы создаем и разрабатываем с помощью стилей. Кроме этого мы устанавливаем слои изображений в формате PNG.

Код
#menu{  
  display: inline-block;  
  height:135px;  
  width:80%;  
  vertical-align: middle;  
  white-space: nowrap;  
}  
#menu li {  
  position: relative;  
  z-index: 2;  
  display: block;  
float: left;  
  width: 15%;  
  height: 135px;  
  line-height: 220px;  
  margin-right: 1.42857%;  
  white-space: nowrap;  
  background-position: 50%;  
}  
.rocket {  
  background: url('rocket-large.png')no-repeat;  
  margin-left: 1.42857%;  
}  
.wine{  
  background:url('wine-large.png')no-repeat;  
}  
.burger{  
  background:url('burger-large.png')no-repeat;  
}  
.comment{  
  background:url('comment-large.png')no-repeat;  
}  
.sport{  
  background:url('sport-large.png')no-repeat;  
}  
.earth{  
  background:url('earth-large.png')no-repeat;  
}  
#menu ul{  
  position:relative;  
}  
#menu ul:after{  
  content:"";  
  display:block;  
  clear:both;  
}  
#menu a{  
  color:#D8D8D8;  
  text-decoration:none;  
  display:block;  
  width:100%;  
  height:100%;  
  text-shadow: 0 -1px 0 #000;  
}  
#menu li:after {  
  content: "";  
  width: 9.5238%;  
  height: 100%;  
  position: absolute;  
  top: 0;  
  right: -9.5238%;  
  background: url('menu-bg.png');  
}  
.rocket:before {  
  content: "";  
  width: 9.5238%;  
  height: 100%;  
  position: absolute;  
  top: 0;  
  left: -9.5238%;  
  background: url('menu-bg.png');  
  border-radius: 5px 0px 0px 5px;  
}  
.earth:after{  
  border-radius:0px 5px 5px 0px;  
}  
.current{  
  position:absolute;  
  top:-13px;  
  left:8.92857%;  
  margin-left: -49px;  
  width:95px;  
  height:165px;  
  -webkit-transition: all 400ms cubic-bezier(.45,1.92,.9,1.54);  
-moz-transition: all 400ms cubic-bezier(.45,1.92,.9,1.54);  
-o-transition: all 400ms cubic-bezier(.45,1.92,.9,1.54);  
-ms-transition: all 400ms cubic-bezier(.45,1.92,.9,1.54);  
  transition: all 400ms cubic-bezier(.16,1.23,.87,1.18);  
}  
.current-back{  
  width:100%;  
  height:100%;  
  position:absolute;  
  background:#c39449;  
  border-radius:5px;  
  border-bottom: 2px solid rgba(0, 0, 0, 0.09);  
  border-top: 2px solid rgba(255,255,255,0.1);  
}  
.top-arrow{  
  position:absolute;  
  overflow:hidden;  
  width:100%;  
  height:12px;  
  top:13px;  
  left:0;  
  z-index:2;  
}  
.top-arrow:before{  
  content:"";  
  position:absolute;  
  width:80%;  
  height:10px;  
  top:-10px;  
  left:10%;  
  border-radius:20%;  
  box-shadow:0 0 10px black;  
}  
.top-arrow:after{  
  content:"";  
  position:absolute;  
  width:0;  
  height:0;  
  top:0px;  
  border-top:8px solid #c39449;  
  border-left:6px solid transparent;  
  border-right:6px solid transparent;  
  margin-left:-6px;  
  left:50%;  
}  
.bottom-arrow{  
  position:absolute;  
  overflow:hidden;  
  width:100%;  
  height:12px;  
  bottom:17px;  
  left:0;  
  z-index:2;  
}  
.bottom-arrow:before{  
  content:"";  
  position:absolute;  
  width:80%;  
  height:10px;  
  bottom:-10px;  
  left:10%;  
  border-radius:20%;  
  box-shadow:0 0 10px black;  
}  
.bottom-arrow:after{  
  content:"";  
  position:absolute;  
  width:0;  
  height:0;  
  bottom:0;  
  border-bottom:12px solid #c39449;  
  border-left:8px solid transparent;  
  border-right:8px solid transparent;  
  margin-left:-8px;  
  left:50%;  
}  
.wine:hover ~ .current{  
  left: 25.5%;  
}  
.burger:hover ~ .current{  
  left: 42%;  
}  
.comment:hover ~ .current{  
  left: 58.5%;  
}  
.sport:hover ~ .current{  
  left: 75%;  
}  
.earth:hover ~ .current{  
  left: 91.1%;  
}


Готово!

CSS3 берет свое, как не крути! Но вот данный прием не работает в IE ниже 10 версии. Там нет никаких анимаций, плюс чем ниже версия IE тем хуже становится меню. Но это не значит что мы должны оставить этот эффект ради старого IE.
Автор публикации: Загрузка
Загрузка
Вовчик, это его n материал
  • Оставить первым комментарий:
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация | Вход
Меню сайта
Категории
Для помощи создания сайта uCoz 25
Скрипты и модификации для Ucoz 2118
Шаблоны форумов Ucoz 28
Шаблоны сайтов Ucoz 431
Авторство Webo4ki 309
php скрипты для ucoz 57
Графика для uCoz 40
Мини-чат
Последние комментарии
  • Marishka написал:
  • Доп 8 станций:
    Код
    <div class="mSt"><p>Tropical</p><div data="2/trop_64">64</div><br><div data="2/trop_128">128</div><br><div data="2/trop_320">320</div></div>  
      <div class="mSt"><p>Нафталин FM</p><div data="2/naft_64">64</div><br><div data="2/naft_128">128</div><br><div data="2/naft_320">320</div></div>  
      <div class="mSt"><p>Rave FM</p><div data="2/rave_64">64</div><br><div data="2/rave_128">128</div><br><div data="2/rave_320">320</div></div>  
      <div class="mSt"><p>Gold</p><div data="2/gold_64">64</div><br><div data="2/gold_128">128</div><br><div data="2/gold_320">320</div></div>  
      <div class="mSt"><p>GOA/PSY</p><div data="2/goa_64">64</div><br><div data="2/goa_128">128</div><br><div data="2/goa_320">320</div></div>  
      <div class="mSt"><p>Minimal/Tech</p><div data="2/mini_64">64</div><br><div data="2/mini_128">128</div><br><div data="2/mini_320">320</div></div>  
      <div class="mSt"><p>House</p><div data="2/fut_64">64</div><br><div data="2/fut_128">128</div><br><div data="2/fut_320">320</div></div>  
      <div class="mSt"><p>Megamix</p><div data="2/mix_64">64</div><br><div data="2/mix_128">128</div><br><div data="2/mix_320">320</div></div>


    Fix работы радио:
    Находим: if(radUrl=="tm" || radUrl=="ps" || radUrl=="teo" || radUrl=="dc")
    Меняем на: if (radUrl == "tm" || radUrl == "ps" || radUrl == "teo" || radUrl == "dc" || radUrl == "gop")
  • CbIPoK2513 написал:
  • Мой вариант выдаёт аватарку картинкой, а не текстом.
  • waak написал:
  • и ещё забыл добавить что использую модуль каталог сайтов
  • waak написал:
  • Почему у меня он перелистывает в верх а не вниз и если это первая песня на стр то он её по кругу гоняет а не переходит к последней
    и как сделать стоп по клику на трек который играет?
  • Acht написал:
  • Тест
    Последние темы
    Опрос
    255
    А
    Р
    Что произойдёт: $("#...
    Статистика
    Анализ интернет сайта
    0
    онлайн
    0
    наших
    0
    чужих
    Онлайн всего: 2
    Гостей: 1
    Пользователей: 1
    0
    Сегодня были
    Топ пользователей: