8 187 Скрипты / Menu & Nav

Диагональное меню на CSS

Используя возможности CSS3 в этом уроке сделаем диагональное меню, и напишем media queries, чтобы придать ему адаптивности.

HTML

Разметка не представляет из себя ни чего сложного. Но следует обратить внимание, что внутри анкора мы текст дополнительно помещаем в тег SPAN. Зачем так поступили увидим, когда посмотрим стили.

<nav>
    <ul>
        <li><a href="#"><span>Главная</span></a></li>
        <li><a href="#"><span>Статьи</span></a></li>
        <li><a href="#"><span>Портфолио</span></a></li>
        <li><a href="#"><span>Новости</span></a></li>
        <li><a href="#"><span>Услуги</span></a></li>
        <li><a href="#"><span>Контакты</span></a></li>
    </ul>
</nav>

CSS

Теперь "украсим" нашу разметку. Начнем от малых размеров экрана и по возрастающей. Точка останова (breakpoint) будет при ширине экрана 690px. На больших мониторах увидим меню во всей красе, со скосами и фоном. На маленьких экранах уберем и фон и перекосы, можно конечно было все сохранить, уменьшив лишь размер шрифта и отступы - но тут вы сами решите, как будет лучше именно для вас.
Элементам списка назначим свойство display:inline-block, для анкоров - display:block (чтобы заполнить все пространство), SPAN - также будет блочным.
В точке 690px мы применяем свойство transform:skewX(n deg) к элементам списка (LI), где n - угол скоса. Анкоры будут наследовать это свойство, а вот текст мы выровняем - не нужно, чтобы он был перекошен - для этого нам и нужен SPAN - которому задаем skew(10deg) (в противовес отрицательному):

nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    text-align: center;
}
nav li {
    display: inline-block;
    margin: 0 5px;
    transition: all 0.3s;
}
nav a {
    display: block;
    color: #285064;
    transition: all 0.3s;
}
nav a:hover {
    color: #12242d;
}
nav span {
    display: block;
}
 
@media all and (min-width: 690px) {
    nav li {
        margin: 0;
        transform: skewX(-10deg);
    }
    nav a {
        padding: 10px 20px;
        color: #fff;
        background-color: #285064;
    }
    nav a:hover {
        color: #fff;
        background-color: #12242d;
    }
    nav span {
        transform: skewX(10deg);
    }
}

Эффект увидим только в современных браузерах, которые поддерживают CSS3 transition/transform.

Скачать 2101Загрузок 7,55 Kb
Демо

Комментарии

  • Facebook
  • Вконтакте

Похожие статьи