Сексуальная CSS3 менюшка

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

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

Идея
Если вы - веб-разработчик, то наверняка слышали о таком инструменте, как CSS pre-processors. Less - это, возможно, один из самых известных CSS pre-processor, однако суть не в этом.

Гуляя по сайту LESS, я обратил внимание на их кнопки “download”, которые представляют собой изображение. Я подумал: я ведь могу сделать такие же с помощью одного лишь CSS.

HTML
<nav>
        <ul>
                <li><a href="#"><span>Home</span></a></li>
                <li><a href="#"><span>Categories</span></a></li>
                <li><a href="#"><span>About</span></a></li>
                <li><a href="#"><span>Portfolio</span></a></li>
                <li><a href="#"><span>Contact</span></a></li>
        </ul>
</nav>

Ничего лишнего, кроме элемента span. Позже вы увидите, зачем нам нужны эти span.

CSS
Демонстрационный пример содержит также заголовок и логотип (что значит, дополнительные стили), но здесь я предоставлю только стили, касающиеся менюшки.

Обнуление стилей по умолчанию
nav ul
{
        padding: 0;
        margin: 0;
        list-style: none;
}
 
nav li
{
        float: left;
}

Стилизация ссылок
nav a
{
    float: left;
    color: #eee;
    margin: 0 5px;
    padding: 3px;
    text-decoration: none;
    border: 1px solid #831608;
    font: bold 14px Arial, Helvetica;
    background-color: #831608;
    background-image: -moz-linear-gradient(#bb413b, #831608);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#bb413b), to(#831608));
    background-image: -webkit-linear-gradient(#bb413b, #831608);
    background-image: -o-linear-gradient(#bb413b, #831608);
    background-image: -ms-linear-gradient(#bb413b, #831608);
    background-image: linear-gradient(#bb413b, #831608);
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    text-shadow: 0 -1px 0 rgba(0,0,0,.8);
    -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset;
    -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset;
}
 
nav a:hover
{
    background-color: #bb413b;
    background-image: -moz-linear-gradient(#831608, #bb413b);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#831608), to(#bb413b));
    background-image: -webkit-linear-gradient(#831608, #bb413b);
    background-image: -o-linear-gradient(#831608, #bb413b);
    background-image: -ms-linear-gradient(#831608, #bb413b);
    background-image: linear-gradient(#831608, #bb413b);
}
 
nav a:active
{
    background: #bb413b;
    position: relative;
    top: 2px;
    -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset;
    -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset;
    box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset;
}

Стилизация элемента span
nav span
{
    border: 1px dashed #eba1a3;
    display: inline-block;
    padding: 4px 15px;
    cursor: pointer;
    background-color: #bb413b;
    background-image: -moz-linear-gradient(#d4463c, #aa2618);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#d4463c), to(#aa2618));
    background-image: -webkit-linear-gradient(#d4463c, #aa2618);
    background-image: -o-linear-gradient(#d4463c, #aa2618);
    background-image: -ms-linear-gradient(#d4463c, #aa2618);
    background-image: linear-gradient(#d4463c, #aa2618);
}
 
nav a:hover span
{
    background-color: #bb413b;
    background-image: -moz-linear-gradient(#aa2618, #d4463c);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#aa2618), to(#d4463c));
    background-image: -webkit-linear-gradient(#aa2618, #d4463c);
    background-image: -o-linear-gradient(#aa2618, #d4463c);
    background-image: -ms-linear-gradient(#aa2618, #d4463c);
    background-image: linear-gradient(#aa2618, #d4463c);
}

Поддержка браузерами
Если вы уже видели, как отображается меню в современных браузерах, то вот, как оно выглядит в старых версиях:

Преимущества
Масштабируемость: изменять размеры менюшки, можно просто меняя значение свойста font-size у ссылок:font: bold 14px Arial, Helvetica;
Никаких изображений: следовательно, меньше HTTP запросов на изображения, а также легкость в манипулировании и изменении.
Вы можете легко преобразовать данное меню в выпадающее меню.

Вывод
Меню, которое мы создали в нашем уроке, - не Sci-Fi и не супер-мега сложное. Идея заключалась в том, чтоб показать, как с помощью CSS3 можно достичь красивого эффекта без единого изображения.

Надеюсь, вам понравилась статья, спасибо за внимание!
Теги:
CSS3, меню
Добавлено: 27 Апреля 2018 19:08:53 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...