Автор

16 04.2013
Анимированное 3D меню для сайта на CSS3

Анимированное 3D меню для сайта на CSS3


 

Несомненно меню это важнейший элемент на сайте, мы об этом уже не раз писали. Но меню зачастую веб-мастера создают достаточно простую навигацию, это не всегда правильный подход к организации материала на сайте. Если сайт сделан в минималистическом стиле, то ему не нужно объемное меню, или футуристический подход. Но для всех остальных сайтах можно по фантазировать, и создать нечто новое и уникальное. В данном уроке мы рассмотрим как создать объемное меню для сайта исключительно на CSS3.

 

ДЕМО
ИСХОДНИКИ

 

Основная идея состоит в том, что выпадающие подпункты меню организованы в список-таблицу, который создает эффект выпадающей вывески. При этом создается иллюзия объемности, и так, приступим.

Шаг 1. HTML

Для начала мы рассмотрим разметку, все достаточно просто, мы создадим список, с принадлежащими ему подпунктами.

<div id="container">
<ul id="menu">
 <li><a href="#">О мне</a>
 <ul>
 <li><a href="#">Контакты</a></li>
 <li><a href="#">Материалы</a></li>
 <li><a href="#">Презентации</a></li>
 </ul>
 </li>
 <li><a href="#">Портфолио</a>
 <ul>
 <li><a href="#">Интересные работы</a></li>
 <li><a href="#">Удачные работы фотографа</a></li>
 <li><a href="#">Заказы</a></li>
 <li><a href="#">Студия</a></li>
 <li><a href="#">Увидеть мои работы</a></li>
 <li><a href="#">Заказать фотосессию</a></li>
 </ul>
 </li>
 <li><a href="#">Клиентам</a>
 <ul>
 <li><a href="#">Заказать студию</a></li>
 <li><a href="#">Аренда аппаратуры</a></li>
 <li><a href="#">Система скидок</a></li>
 </ul>
 </li>
 <li><a href="#">Контакты</a>
 <ul>
 <li><a href="#">Где мы находимся</a></li>
 <li><a href="#">Наш офис</a></li>
 <li><a href="#">Как нас найти</a></li>
 </ul>
 </li>
 <li><a href="#">Поддержка</a></li>
</ul>
</div>

Новые пункты легко добавить, не будем останавливаться детально.

Шаг 2. CSS

Теперь рассмотрим главный элемент в меню, а именно создания трансформаций, с помощью которых подпункты будут выпадать, для этого нам необходимо добавить несколько базовых стилей, кроме этого мы будем использовать функцию rotateX, которая позволит указать угол вращения.

#menu {
 position: relative;
 float: left;
 width: 100%;
 padding: 0 20px;
 border-radius: 3px;
 box-shadow: inset 0 1px 1px rgba(255,255,255,.5), inset 0 -1px 0 rgba(0,0,0,.15), 0 1px 3px rgba(0,0,0,.15);
 background: #ccc;
 }

#menu, #menu ul {
 list-style: none;
 }

#menu > li {
 float: left;
 position: relative;
 border-right: 1px solid rgba(0,0,0,.1);
 box-shadow: 1px 0 0 rgba(255,255,255,.25);
 perspective: 1000px;

}

#menu > li:first-child {
 border-left: 1px solid rgba(255,255,255,.25);
 box-shadow: -1px 0 0 rgba(0,0,0,.1), 1px 0 0 rgba(255,255,255,.25);
 }

#menu a {
 display: block;
 position: relative;
 z-index: 10;
 padding: 13px 20px 13px 20px;
 text-decoration: none;
 color: rgba(75,75,75,1);
 line-height: 1;
 font-weight: 600;
 font-size: 12px;
 letter-spacing: -.05em;
 background: transparent;
 text-shadow: 0 1px 1px rgba(255,255,255,.9);
 transition: all .25s ease-in-out;

}

#menu > li:hover > a {
 background: #333;
 color: rgba(0,223,252,1);
 text-shadow: none;
 }

#menu li ul {
 position: absolute;
 left: 0;
 z-index: 1;
 width: 200px;
 padding: 0;
 opacity: 0;
 visibility: hidden;
 border-bottom-left-radius: 4px;
 border-bottom-right-radius: 4px;
 background: transparent;
 overflow: hidden;
 transform-origin: 50% 0%;
 }

#menu li:hover ul {

padding: 15px 0;
 background: #333;
 opacity: 1;
 visibility: visible;
 box-shadow: 1px 1px 7px rgba(0,0,0,.5);
 animation-name: swingdown;
 animation-duration: 1s;
 animation-timing-function: ease;

}

@keyframes swingdown {
 0% {
 opacity: .99999;
 transform: rotateX(90deg);
 }

30% {
 transform: rotateX(-20deg) rotateY(5deg);
 animation-timing-function: ease-in-out;
 }

65% {
 transform: rotateX(20deg) rotateY(-3deg);
 animation-timing-function: ease-in-out;
 }

100% {
 transform: rotateX(0);
 animation-timing-function: ease-in-out;
 }
 }

#menu li li a {
 padding-left: 15px;
 font-weight: 400;
 color: #ddd;
 text-shadow: none;
 border-top: dotted 1px transparent;
 border-bottom: dotted 1px transparent;
 transition: all .15s linear;
 }

#menu li li a:hover {
 color: rgba(0,223,252,1);
 border-top: dotted 1px rgba(255,255,255,.15);
 border-bottom: dotted 1px rgba(255,255,255,.15);
 background: rgba(0,223,252,.02);
 }

 

Также мы используем градиентную заливку, которая позволит создать плавные переходы оттенков и теней.

Я использовал данное меню на сайте усадьбы «Сказка»!

Усадьба «Сказка»

Вот и все. Готово!


vk.com/club.ssdru

Подписывайтесь на нашу группу в контакте vk.com/club.ssdru


Статьи по темеCSS3

23 01.2016
Анимированное 3D меню для сайта на CSS3

В передыдущих уроках «Интересные кнопки поделиться в соцсетях на CSS3»  и «Анимация кнопки читать в Twitter на CSS3» я писал как можно сделать интересные и необычные кнопки для соцсетей, а самое главное, что без скриптов и на чистом CSS. Продолжая эту тему хочу поделиться очередной рпример оформления своего сайта!


21 04.2013
Анимированное 3D меню для сайта на CSS3

На некоторых сайтах можно встретить боковые меню, принцип его реализации можно найти в мобильной версии вконтакте и популярно сайта 3dnews. Это весьма удобно, ведь даже на моей мобильной версии IE это смотрится достаточно привлекательно, благодаря плавной анимации и простоте решения. В данном уроке мы рассмотрим как можно создать такое боковое меню. Мы рассмотрим несколько типов бокового меню: меню слева, права и добавим вариант просмотра с контентом, что позволит выводить страницу подобно фреймам.


14 05.2017
Анимированное 3D меню для сайта на CSS3

Сегодня ресурс представляет собой полноразмерное изображение заголовка, анимированное с использованием свойства масштаба CSS3 и jQuery для имитации эффекта 3D-уменьшения и отображения основного содержимого страницы.


25 03.2013
Анимированное 3D меню для сайта на CSS3

Еще одна полезная для сайтов вещь - вставка текущей даты. Примеров скриптов даты можно найти в интернете десятки, однако многие из них, на мой взгляд, тяжеловесны и, следовательно, некрасивы. Между тем, используя стандартные средства JavaScript, вставить дату на страницу сайта можно очень просто. Я его очень часто применяю! На картинке (скриншот с действующего сайта)  усадьбы «Сказка»!


105 Публикаций

Раскрутка в соцсетях

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


Перейти в Блог

О КОМПАНИИ

Studio Design существует с 2001 года. Основной нашей деятельностью до 2007 года было видеопроизводство ( видеореклама и документальные фильмы, о чем подробно описано в нашем блоге ). С 2007 года, вот уже как лет, наша основная специфика - это создание сайтов для бизнеса или частной деятельности, веб дизайн, а также поддержка и администрирование готовых проектов. Каждая выполненная нами работа - это уникальный, а самое главное, адаптивный под все современные мобильные устройства дизайн сайта. Мы готовы создать сайт с нуля для каждого клиента с любого уголка России! Мы поможем Вам в создании, как одностраничных сайтов – визиток, так и крупных интернет магазинов или корпоративных сайтов. А все наши работы, большинство из которых действуют и по сей день!

Close

Целовальников Сергей


Веб-дизайн, HTML5, CSS3, jQuery, JavaScript, Верстка.

Верстальщик с большим опытом работы. Занимаюсь созданием сайтов с 2005 года. Постоянно обучаюсь и совершенствую свои навыки. Веду свои проекты, в том числе и данный блог.

Close