Сейчас: 09:30:10   19-го апреля 2024 г.
UsefulScript.ruСкриптыСложные менюПоявляющееся меню на jQuery
86
168

Появляющееся слева направо меню на jQuery

В данной теме мы рассмотрим, как при помощи jQuery сделать простой скрипт, который будет отвечать за плавно появляющееся слева направо меню, которое изначально будет скрыто за пределами экрана. При повторном клике меню плавно исчезнет за пределы экрана.


Чтобы понять, о чем идет речь, обратите внимание на вертикальную надпись "МЕНЮ" на синем фоне с левой стороны экрана. Для того чтобы плавно появилось основное меню, кликните по данной надписи. Для плавного исчезновения меню повторно кликните по надписи "МЕНЮ".


- На главную
- Скрипты
- Хитрости
- Статистика
- Форум
- Карта сайта

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


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


Для начала Вам потребуется подключить на своем сайте библиотеку jQuery. Сделать это можно следующим образом:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

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

HTML код:
<table id="div_Menu">
 <
tr>
  <
td style="width: 100px;">
  - <
a href="http://usefulscript.ru/">На главную</a><br>
  - <
a href="http://usefulscript.ru/script.php">Скрипты</a><br>
  - <
a href="http://usefulscript.ru/trick.php">Хитрости</a><br>
  - <
a href="http://usefulscript.ru/statistics.php">Статистика</a><br>
  - <
a href="http://usefulscript.ru/forum/index.php">Форум</a><br>
  - <
a href="http://usefulscript.ru/map.php">Карта сайта</a>
  </
td>
  <
td id="link_Menu">М<br>Е<br>Н<br>Ю</td>
 </
tr>
</
table>

Для данной таблицы необходимо прописать следующие стили, которые скроют основное меню и зафиксируют его относительно экрана:

HTML код:
<style type="text/css">
 
#div_Menu {
    
positionfixed;
    
left: -116px;
    
top200px;
    
border-spacing0;
    
border1px solid blue;
    
background-color#eeeeee;
    
line-height1.5;
}
 
#div_Menu td { padding: 7px; }
 #link_Menu {
    
width25px;
    
text-aligncenter;
    
background-color#0099ff;
    
cursorpointer;
}
</
style>

Теперь остается лишь добавить небольшой JavaScript код, который при помощи библиотеки jQuery будет плавно перемещать меню слева направо и обратно:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
 var 
route = $("#div_Menu").offset().left;
 $(
"#link_Menu").click(function(){
    if ($(
"#div_Menu").offset().left<0) $("#div_Menu").animate({left:0}, 500);
    else $(
"#div_Menu").animate({left:route}, 500);
 });
});
</script>

Как видите, задумка данного скрипта довольна хорошая, и реализация не занимает много места. Остается лишь немного поработать над оформлением и можно использовать.

https://pedant.ru/remont-apple/ipad/zamena-antenny

Дата создания: 19:25:04 02.05.2014 г.
Посещений: 9898 раз(а).

Комментарии посетителей (13 шт.):
Юрий
0
# 2314
(12:31:46  11.03.2015 г.)

А как дополнить скрипт, чтоб открытое меню скрывалось не только при клике на связанную с ним ссылку, а также при клике в любом месте вне этого блока?
Ответить

Administrator
2
# 2318
(20:15:33  11.03.2015 г.)

Замените JavaScript код на такой:
$(document).ready(function(){
var route = $("#div_Menu").offset().left;
$("#link_Menu").click(function(){ if ($("#div_Menu").offset().left<0) $("#div_Menu").animate({left:0}, 500); });
$(document).click(function(){ if ($("#div_Menu").offset().left>=0) $("#div_Menu").animate({left:route}, 500); });
});
Ответить

Евгений
0
# 3190
(07:22:50  30.04.2016 г.)

Здравствуйте! А как сделать, чтобы меню всплывало поверх всего содержимого, я работаю в конструкторе, создаю самостоятельно лендинг, и при нажатии меню "уходит" под картинку...
Ответить

Administrator
0
# 3191
(13:52:26  30.04.2016 г.)

Используйте CSS свойство z-index.
Ответить

Екатерина
1
# 3342
(22:17:10  22.07.2016 г.)

Приветствую. Скажите пожалуйста, как сделать, что бы меню выдвигалось справа?
Ответить

Виталий
0
# 3429
(14:33:54  21.09.2016 г.)

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

Administrator
0
# 3430
(21:52:35  21.09.2016 г.)

Замените: $("#link_Menu").click(function(){
на: $("#div_Menu").hover(function(){
Ответить

Виталий
0
# 3431
(07:25:32  22.09.2016 г.)

Спасибо, работает. У меня к вам еще просьба. Не могли бы помочь реализовать, чтобы в меню ссылка была активная на странице, т.е. у меня 4 ссылки в этом меню и, например, пользователь, находясь на странице contact.php, при клике на меню видел, что он находится на странице contact.php и при переходе по ссылке на другую страницу другая ссылка должна соответствовать странице и быть активной, далее с помощью css можно добавить стиль к активной ссылке, но пока при клике на меню все ссылки одинаковые. Буду признателен за помощь.
Ответить

Administrator
0
# 3437
(22:33:14  22.09.2016 г.)

Добавьте стиль .current{ color: #FF0000; }
А JavaScript код будет выглядеть следующим образом:
$(document).ready(function(){
var route = $("#div_Menu").offset().left;
$("#div_Menu").hover(function(){
if ($("#div_Menu").offset().left<0) $("#div_Menu").animate({left:0}, 500);
else $("#div_Menu").animate({left:route}, 500);
});
var url = document.location.href;
url = url.substring(url.lastIndexOf("/")+1);
$("a[href*='"+url+"']").addClass("current");
});
Ответить

Виталий
0
# 3440
(09:28:01  23.09.2016 г.)

Спасибо большое, все работает. Сам разобрался как добавить title для текущей страницы, как лучше сделать ссылку с классом current не активной, смысл по ней кликать, так как в данный момент на этой странице и находишься. Есть вариант через css, т.е. прописать класс и например pointer-events: none; или свойства для курсора поменять, а можно ли для класса current в скрипте дописать, чтобы ссылка была не активной. Заранее благодарен.
Ответить

Administrator
0
# 3441
(22:16:18  23.09.2016 г.)

Проще удалить ссылку при помощи JS. Замените: $("a[href*='"+url+"']").addClass("current");
на: $("a[href*='"+url+"']").addClass("current").removeAttr("href");
Ответить

Виталий
0
# 3444
(11:39:03  24.09.2016 г.)

Работает, спасибо, так действительно проще через js чем при помощи css. У меня последняя к вам просьба.
Дальнейшее обсуждение перенесено на форум, но Вы можете оставлять свои комментарии здесь и они будут перенесены на форум.
Ответить

Алексей
0
# 4256
(23:52:48  09.03.2018 г.)

Как его сделать cправа налево?
Ответить

Закрыть
Ваше имя:
264 + 13 =
Добавить комментарий:
Ваше имя:
264 + 13 =

Перед публикацией все комментарии проходят обязательную модерацию!

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

Мешает ли Вам реклама?