-->

Ads 468x60px

Labels



Жириновщина - Самое интересное в блогах

Владимир Вольфович Эйдельштейн, больше известный под фамилией Жириновский - явление в российской политике неординарное. Политический аферист, умело лавирующий между «ветвями власти».

Русский спрут

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

Если завтра война...

До недавнего времени разговоры военных аналитиков и экспертов в основном велись вокруг угрозы терроризма, войн и развала стран на Ближнем Востоке, но все чаще и чаще в СМИ всплывает тема возможной войны...

Кремлевские байки

Самые обсуждаемые темы в Кремле и за его стенами, не обойдем мимо и международные сношения - всё через призму изъянов

Работа в интернете без вложений

Ранее не задавался таким вопросом, а потом понял, что тема действительно актуальна и найти работу в интернете хотят многие. Более того, я сам ее искал и находил.


понедельник, 6 марта 2017 г.

Выдвигающееся левое меню на чистом CSS

Все больше и больше сайтов используют значок с фиксированным положением, для раскрывающегося вывода меню. В то время как есть много JQuery плагинов, которые будут создавать этот эффект, это на самом деле довольно легко сделать не используя ни чего кроме CSS и HTML. Эта статья покажет вам, как сделать простой вариант бокового выдвигающегося меню с эффектом скольжения, используя только CSS.
Вот демо версия показывающая конечный результат:


Начнем с HTML разметки
Это основная структура html разметки:
?
1
2
3
4
5
6
7
8
9
10
11
12
<ul class="navigation">
    <li class="nav-item"><a href="#">Home</a></li>
    <li class="nav-item"><a href="#">Portfolio</a></li>
    <li class="nav-item"><a href="#">About</a></li>
    <li class="nav-item"><a href="#">Blog</a></li>
    <li class="nav-item"><a href="#">Contact</a></li>
</ul>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger"></label>
<div class="site-wrap">
    <!-- основная страница сайта -->
</div>
Вся разметка нашего сайта состоит из трех основных частей: меню навигации, чекбокса с label, и содержимое сайта.
    Основные моменты разметки:
  • Раздел навигации идет первым в разметке, потому что все остальные элементы находятся за меню. Вы можете использовать любые HTML теги какие вы хотите для построения меню. Здесь я использую неупорядоченный список.
  • Кнопка управления меню это чекбокс и label. Обычно label идет перед чекбоксом или обернут вокруг него. В нашем случае чекбокс должен идти непосредственно перед label. Мы увидим почему это так когда после добавления CSS.
  • Остальная часть нашего сайта должна быть заключена в уникальном div. Это объясняется тем, что, когда мы открываем меню, все остальное смещается немного правее, чтобы показать скрытые элементы навигации.
Теперь, когда мы получили структуру HTML, мы можем начать все красиво оформлять.
CSS для элементов меню
Давайте начнем с настройки меню и его элементов. Прежде всего, мы должны убедиться, что навигационное меню находится позади нашего контента и что оно остается на месте, даже если пользователь перемещается по странице:
?
1
2
3
4
5
6
7
8
9
10
11
12
.navigation {
   list-stylenone;
   background#111;
   width100%;
   height100%;
   positionfixed;
   top0;
   right0;
   bottom0;
   left0;
   z-index0;
}
Я добавил стили, чтобы настроить оформление нашего меню (фоновые цвета, границы, градиенты и т.д.). Я не буду повторять код здесь, но вы можете ознакомиться с ним в демо примере.
Теперь у нас есть красивые элементы меню, но все меню находится над страницей с контентом. Необходимо добавить стили, чтобы скрывать меню, пока же мы настроим страницу с контентом.
CSS для блока с контентом сайта
Для начала, давайте удостоверимся, что контент сайта полностью закрывает наше меню. Вы можете добавить несколько абзацев РыбаТекста в .site-wrap, если вы еще не добавили содержания.
?
1
2
3
4
5
6
7
8
9
10
.site-wrap {
   min-width100%;
   min-height100%;
   background-color#fff;
   positionrelative;
   top0;
   bottom100%;
   left0;
   z-index1;
}
Обратите внимание, что мы должны указать фон .site-wrap, иначе меню будет отображаться позади контента. Вы конечно можете использовать любой фоне который хотите. Я добавил следующие параметры:
?
1
2
3
4
5
6
7
8
.site-wrap {
   padding4em;
   background-image: linear-gradient(135deg,
   rgb(254,255,2550%,
   rgb(221,241,24935%,
   rgb(160,216,239100%);
   background-size200%;
}
CSS для кнопки меню
Теперь мы добавим стили, которые придадут нашим чекбоксу и label привычный всем вид, к которому все привыкли.
Прежде всего, давайте скроем чекбокс.
?
1
2
3
4
5
.nav-trigger {
   displayblock;
   width0;
   height0;
}
Настройки displa: block важны. По умолчанию input элементы отображаться как inline-block, так что мы должны установить его как block, чтобы мы могли установить ширину и высоту до нуля. Если мы использовали бы display:none или visiblity: hidden то отключили бы взаимодействие клавиатуру с кнопкой меню, так что мы избежали этого.
Теперь давайте стилизуемэлемент:
?
1
2
3
4
5
6
label[for="nav-trigger"] {
   positionfixed;
   top15px;
   left15px;
   z-index2;
}
Во-первых, мы установим position: fixed; теперь label будет на фиксированном месте во время прокрутки страницы. top и left свойства определяют, как далеко от края будет находится кнопка. Мы также установим z-index что бы кнопка была выше .site-wrap.
Далее, мы добавляем значок для кнопки.
?
1
2
3
4
5
6
7
label[for="nav-trigger"] {
   width30px;
   height30px;
   cursorpointer;
   background-imageurl("data:image/svg+xml;utf8,");
   background-size: contain;
}
Я использовал встроенный SVG в качестве фонового изображения, но вы можете использовать любой значок.
Обратите внимание, я также включил cursor: pointer; для визуального отображения интерактивности кнопки.
CSS для анимации
Теперь, когда наши стили меню и кнопки готовы, давайте добавим несколько строк CSS, которые анимируют все это.
?
1
2
3
4
5
6
7
.nav-trigger:checked + label {
   left215px;
}
.nav-trigger:checked ~ .site-wrap {
   left200px;
   box-shadow: 0 0 5px 5px rgba(0,0,0,0.5);
}
Второй блок гарантирует, что контент сайта сместится вправо на 200 пикселей. Я также добавил тень к блоку контента, чтобы придать ему дополнительный визуальный вид того, что она смешена.
Первый селектор (.nav-trigger:checked + label) контролирует положение триггера, когда меню открыто. Значение 215 получается из суммы значений 15 ( label[for="nav-trigger"] значение left) и 200 (.nav-trigger:checked ~ .site-wrap значение left )
Это код где порядок элементов триггера становится важным. Второй селектор использует ~, селектор для .site-wrap, когда .nav-trigger отмечен.
?
1
2
3
.nav-trigger + label, .site-wrap {
   transition: left 0.2s;
}
И последнее, скрыть скрол по горизонтали.
?
1
2
3
body {
   overflow-x: hidden;
}
Готовый вариант
И вот оно! Мы успешно построил выдвигающееся меню навигации без JavaScript. Еще раз, демо версия:


Теперь, когда вы знаете, как это делается, можно использовать разные вариации и настройка, пробуйте экспериментируйте.
источник
Открыть комментарии: или

0 коммент.:

Отправить комментарий




Друзья! Вы можете поддержать сайт материально!

 

Реклама:

Подпишись на YOUTUBE:

Посетителей:

qiwiЗАЙМ НА QIWI
до 20 000 руб.
Получить
webmoneyКРЕДИТ WEBMONEY
до 10 000 USD
Получить
cardЗАЙМ НА КАРТУ
до 100 000 руб.
Получить

Вы можете получить WMR-бонус в размере 0.01-0.02 WMR на свой кошелек 1 раз в сутки

Кошелек
Код Защитный код

Пополнение, вывод и обмен WebMoney

Список моих проектов:

Собщений и комментариев:



Подписки: