X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Фиксированная, открывающаяся, боковая панель, для меню на сайт

Приклад
  • 2024-03-28
  • 7950 переглядів

  • Дизайн та розробка сайту

Доброго времени суток. 🙂

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

Фиксированная, открывающаяся, боковая панель, для меню на сайт



Пример


Скачать

Такая панель работает с помощью jQuery, поэтому нужно убедится что на вашем сайте подключена библиотека. Если нет, то это нужно сделать. Можете воспользоваться статей Как и где подключить скрипт?, если не знаете как это сделать.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

Далее подключаете сам скрипт:

<script>
jQuery(document).ready(function($){
$(function(){var GNmenu={isMenuOpened:false,init:function(){var menuBtn=$('#btn-menu');menuBtn.on('touchstart click',function(e){e.stopPropagation();e.preventDefault();if($('#sideNav').hasClass('showHalfMenu')&&!$('#sideNav').hasClass('showFullMenu')){GNmenu.showFullMenu()}else{GNmenu.toggleMenu()}});if(!GNmenu.isMobile()){menuBtn.bind('mouseover',function(){GNmenu.showHalfMenu()});menuBtn.bind('mouseout',function(){GNmenu.hideMenu()});$('#sideNav').bind('mouseover',function(){GNmenu.showFullMenu()});GNmenu.bodyClick()}$('.searchForm input[type=text]').focus(function(){$('html').unbind('click')}).blur(function(){GNmenu.bodyClick()})},bodyClick:function(){$('html').bind('mouseout',function(){if(GNmenu.isMenuOpened){GNmenu.hideMenu()}})},toggleMenu:function(){if(!GNmenu.isMenuOpened){GNmenu.showFullMenu()}else{GNmenu.hideMenu()}},showHalfMenu:function(){$('#sideNav').addClass('showHalfMenu');GNmenu.isMenuOpened=true},showFullMenu:function(){$('#btn-menu').addClass('icon-menu-active');$('#sideNav').addClass('showFullMenu');$('html').addClass('cursor');GNmenu.isMenuOpened=true},hideMenu:function(){$('#btn-menu').removeClass('icon-menu-active');$('#sideNav').removeClass('showFullMenu showHalfMenu');$('html').removeClass('cursor');GNmenu.isMenuOpened=false},isMobile:function(){var check=false;(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);return check;}}
GNmenu.init();});
});
</script>

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

<div id="sideNav">
<div class="top_menu">
<a href="#" class="icon-menu" id="btn-menu"><i class="fa fa-bars" aria-hidden="true"></i></a>
</div>
<ul class="colum_menu">
<li><a href="/" class="icon-home"><i class="fa fa-home" aria-hidden="true"></i> На главную</a></li>
<li class="srch"><i class="fa fa-search" aria-hidden="true"></i>
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<input type="text" class="field" name="s" id="s" placeholder="Что будем искать?" />
<input type="submit" class="sim" name="submit"  value="" />
</form>
</li>
<li><ul class="menu">
<li><a target="_blank" title="Дизайн и разработка сайтов" href="#">Пункт 1</a></li>
<li><a target="_blank" title="Дизайн и разработка сайтов" href="#">Пункт 2</a></li>
<li><a target="_blank" title="Дизайн и разработка сайтов" href="#">Пункт 3</a></li>
<li><a target="_blank" title="Дизайн и разработка сайтов" href="#">Пункт 4</a></li>
</ul></li>
</ul>
</div>	

По сути тут два главных элемента. Сама панель с айди sideNav. И первый ее дочерний блок с классом top_menu. Этот блок - это кнопка с иконкой бутерброда для открытия меню на мобильных устройствах и тд. На ПК панель открывается от наведения. Далее уже идет ссылка, как пример на главную страницу вашего сайта, далее поиск и меню.

На панели используются иконки, созданы они с помощью шрифта Font Awesome. О нем я писал в статье Иконки из шрифта Font Awesome.

Единственная иконка, сделанная не этим шрифтом - кнопка поиск. Для нее используется картинка. она будет в архиве. что можно скачать в архиве выше.

Для того чтобы шрифт Font Awesome работали, так же нужно подключить этот самый шрифт. Делается это в шапке сайта перед закрывающим тегом HEAD. В общем там где вы подключали и стандартные стили css сайта.

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">

Ну и чтобы все это отражалось корректно, нужно добавить стили CSS в свой файл стилей.

/*Панель*/ 
#sideNav  i{line-height:60px;font-size:22px;color:#fff;margin:0 17px;}
#sideNav ul{list-style:none;}
#sideNav{position:fixed;left:0;top:0;width:60px;height:100%;z-index:99;background:#2B303B;overflow-x:hidden;overflow-y:auto;-webkit-transition: 0.2s ease;transition: 0.2s ease;}
#sideNav.showFullMenu {left:0;width:311px;}
.showFullMenu .srch i{display:none;}

.top_menu {height:60px;position:relative;}
.colum_menu{margin:0;padding:0;list-style:none;}
.colum_menu ul{line-height:35px;width:100%;}
.colum_menu ul li{border-bottom:none;}
.colum_menu ul li a{padding-left:60px;}
.colum_menu a{color:#fff;text-decoration:none;display:block;max-height:60px;line-height:35px;overflow:hidden;}
.colum_menu a:hover {color:#fff;background:#5b6064;}	
.icon-menu{color:#333;display:block;}

/*Меню*/ 
.colum_menu li{width:100%;margin:0;position:relative;}
.colum_menu li a {}
.showFullMenu #searchform,.showFullMenu .groupinsoc,.showFullMenu .colum_menu .menu{display:block;}
.colum_menu .menu{margin-top:25px;display:none;}
.colum_menu .menu  li{position:relative;}
.colum_menu .menu li a{color:#fff;padding:0 15px;font-size:16px;font-weight:bold;}

/*Поиск*/
#searchform{display:none;width:250px;margin-left:60px;}
#s{border:none;border-bottom:1px solid #bbb;width:180px;line-height:40px;height:40px;color:#fff;background:transparent;padding:0 5px;margin-right:-4px;}
#s::-webkit-input-placeholder{color:#fff;font-size:15px;}
#s::-moz-placeholder {color:#fff;font-size:15px;}
#s:focus::-webkit-input-placeholder {color:transparent;}
#s:focus::-moz-placeholder{color:transparent;}

#searchform .sim{border:none;padding:5px;background:#4686F2 url(search.png) no-repeat center;width:35px;height:35px;-webkit-border-radius:50px;border-radius:50px;-webkit-transition: all 0.8s ease-in-out;transition: all 0.8s ease-in-out;}
#searchform .sim:hover{-webkit-transform: rotate(360deg);transform: rotate(360deg);}

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

На этом все, спасибо за внимание. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 8, в среднем: 4.5 из 5
Читайте також