Адаптивне меню для сайту

Адаптивне меню для сайту

Всі прагнуть створити сайт що він вірно виглядав на різних екранах (від маленьких дозволів 320х480 до 1920х1900, хоча вони можуть бути менше і більше як в одну так і в іншу сторону). І в цьому уроці ми розглянемо як створити адаптивне меню, яке буде правильно виглядати на різних пристроях. А це дуже важливо для користувача, який переглядає ваш сайт з мобільного пристрою.

Урок про те як створити адаптивний шаблон можна знаходиться тут - Як створити адаптується шаблон.

Реальний приклад можна побачити тут:

Подивитися прімерСкачать

HTML частина

Підключіть обов`язково останню jQuery бібліотеку (вона доступна тут). Структура наступна:

123456789101112131415161718192021222324
="Menu" class="Nav"gt;lt;ulgt;lt;ligt;lt;ahref="#" title=""gt;lt;spanclass="Icon"gt; lt;i aria-hidden="True"class="Icon-home"gt; lt;/igt; lt;/spangt; lt;spangt; Головнаlt;/spangt;lt;/agt;lt;/ligt;lt;ligt;lt;a href="#" title=""gt; lt;span class="Icon"gt; lt;i aria-hidden="True" class="Icon-services"gt; lt;/igt; lt;/spangt; lt;spangt; Сервісиlt;/spangt; lt;/agt;lt;/ligt;lt;ligt;lt;ahref="#" title=""gt; lt;spanclass="Icon"gt; lt;i aria-hidden="True" class="Icon-portfolio»gt; lt;/igt; lt;/spangt; lt;spangt; Портфоліоlt;/spangt; lt;/agt;lt;/ligt;lt;ligt;lt;ahref="#" title=""gt; lt;spanclass="Icon"gt; lt;i aria-hidden="True" class="Icon-blog"gt; lt;/igt; lt;/spangt; lt;spangt; Блогlt;/spangt; lt;/agt;lt;/ligt;lt;ligt;lt;ahref="#" title=""gt; lt;spanclass="Icon"gt; lt;i aria-hidden="True" class="Icon-team"gt; lt;/igt; lt;/spangt; lt;spangt; Командаlt;/spangt; lt;/agt;lt;/ligt;lt;ligt;lt;ahref="#" title=""gt; lt;spanclass="Icon"gt; lt;i aria-hidden="True" class="Icon-contact"gt; lt;/igt; lt;/spangt; lt;spangt; Контактиlt;/spangt; lt;/agt;lt;/ligt;lt;/ulgt;lt;/navgt;

Щоб використовувати значок ми задаємо спеціальні класи icon-name. Також щоб використовувати бібліотеку Modernizr.js ми додали до тегом клас no-js, що дозволяє показувати меню якщо javascript відключений в браузері користувача.

javascriptCSS частина

Для початку поставимо основні стилі:



123456789101112131415161718192021222324252627
.nav ul {max-width: 1240px-margin: 0-padding: 0-list-style: none-font-size: 1.5em-font-weight: 300-}.nav li span {display: block-}.nav a {display: block-color: rgba(249, 249, 249, .9)-text-decoration: none-transition: color .5s, background .5s, height .5s-}.nav i{transform: translate3d(0, 0, 0)-}a, button {-webkit-tap-highlight-color: rgba(0,0,0,0)-}

Відео: Створення сайту з нуля. Урок # 14: Верстка. Адаптивна шапка + адаптивне меню

Також при наведенні всі елементи меню затемняются:

1234567
.no-touch .nav ul: hover a {color: rgba(249, 249, 249, .5)-}.no-touch .nav ul: hover a: hover {color: rgba(249, 249, 249, 0.99)-}

Кожен елемент меню має свій колір:

1234567891011121314151617181920212223
.nav li: nth-child(6n+1) {background: rgb(208, 101, 3)-}.nav li: nth-child(6n+2) {background: rgb(233, 147, 26)-}.nav li: nth-child(6n+3) {background: rgb(22, 145, 190)-}.nav li: nth-child(6n+4) {background: rgb(22, 107, 162)-}.nav li: nth-child(6n+5) {background: rgb(27, 54, 71)-}.nav li: nth-child(6n+6) {background: rgb(21, 40, 54)-}

Відео: Як створити адаптивне меню для сайту

При наведенні елемент меню стає більше по вертикалі, але збільшується воно плавно:

1234567891011121314
.nav a {height: 9em-}.no-touch .nav a: hover ,.no-touch .nav a: active ,.no-touch .nav a: focus {height: 10em-}.no-touch .nav a: hover .icon + span {margin-top: 3.2em-transition: margin .5s-}

Для екранів від 520px до 799px також задані інші значення властивостей. А також для екранів менше 520px властивості відрізняються і задаються окремо. Я не викладаю весь код, тому що він немаленький, але ви можете завантажити приклад і побачити як все зроблено.

Для дуже маленьких екранів меню «ховається» і видно лише кнопка (або перемикач) за допомогою якого можна приховати / розкрити меню. Для цього в javascript необхідно прописати наступне:

1234567891011121314151617181920212223242526
var changeClass = function (r,className1,className2) {var regex = new RegExp("(?: ^ |s +) " + className1 + "(?:s + | $) ")-if( regex.test(r.className) ) {r.className = r.className.replace(regex,``+className2+``)-}elses +) " + className2 + "(?:s +return r.className-}-var menuElements = document.getElementById(`Menu`)-menuElements.insertAdjacentHTML(`AfterBegin`,``)-document.getElementById(`Menutoggle`).onclick = function() {changeClass(this, `Navtoogle active`, `Navtoogle`)-}document.onclick = function(e) {var mobileButton = document.getElementById(`Menutoggle`),buttonStyle = mobileButton.currentStyle ? mobileButton.currentStyle.display : getComputedStyle(mobileButton, null).display-if(buttonStyle === `Block`  e.target !== mobileButton  new RegExp(`` + `Active` + ``).test(`` + mobileButton.className + ``)) {changeClass(mobileButton, `Navtoogle active`, `Navtoogle`)-}}

висновок

Ось як дане меню адаптується під різні дозволи екранів:

Ширина екрана 320px: 320x480 Ширина екрана 768px: 768px

Успіхів!

джерело: tympanus.net

Поділися в соц мережах:
Cхоже

Увага, тільки СЬОГОДНІ!