Тёмный

Уроки JavaScript Практика #4 Пишем выпадающее меню 

Web Developer Blog
Подписаться 246 тыс.
Просмотров 116 тыс.
50% 1

В этом уроке мы напишем самое примитивное выпадающее меню, но которе поможет разобрать все нюансы разработки в javascript.
========================================================
ПОДПИШИСЬ на канал "Web Developer Blog" - goo.gl/Ai4OGa
И не пропускай новые видео!!!
========================================================
ПЛЕЙ-ЛИСТЫ МОЕГО КАНАЛА:
JavaScript практика - goo.gl/rxsyeX
Основы JavaScript - goo.gl/Cw7Vqv
Уроки Bootstrap 4 - goo.gl/65gmmS
Уроки Framework для верстки Foundation 6 - goo.gl/Yi2jfc
Рубрика "Основы за 10 минут" - goo.gl/QIvpDD
Верстка сайта на Foundation 6 - goo.gl/gVS45o
Основы препроцессора SASS - goo.gl/f4BDww
Уроки по Sublime text 3 - goo.gl/SjiKM2
Видео про заработок на RU-vid - goo.gl/VxdirI
Создаем интернет магазин на PrestaShop - goo.gl/jop7M4
Уроки jQuery - goo.gl/xPnZE9
========================================================
ПОДПИШИСЬ на Группу Вконтакте "Web Developer Blog" - goo.gl/6mO5GL
========================================================
Мой заработок на RU-vid - ►goo.gl/C8Jzpv

Опубликовано:

 

12 дек 2016

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 228   
@bledarssong7535
@bledarssong7535 Год назад
Ролику уже 6 лет и тем не менее хочу сказать вам искреннее спасибо. Если бы не такие люди, как вы, то было бы значительно сложнее обустроеться в IT из-за перенасыщенности рынка. А так, благодаря вам, необходимо иметь качество, которая присущи далеко не каждому, а именно завидное терпение, а также, нейронные сети, не позволяющие мозгу сгореть от перенасыщенности сложно перевариваемой информации.
@hazcker5746
@hazcker5746 6 лет назад
Меня как новичка сбивает с толку когда объявляют переменные с таким же именем как и свойство и тд. Вот например объявили переменную target, а далее event.target в этом случае что делает? и можно ли поменять event на x, или event.target (таргет на х) ? или это специальные зарезервированные слова, как alert и тд?
@user-ji2pp2et1r
@user-ji2pp2et1r 4 года назад
да можно
@MaksimStroilo
@MaksimStroilo 4 года назад
event.target отслеживает где находиться курсор, как-то так
@Oksana_Bon
@Oksana_Bon 4 года назад
привыкаешь)) let tg = event.target;
@nepcz
@nepcz 3 года назад
многие кто учит так делает. ппц сбивает с толку
@nandreyk
@nandreyk 3 года назад
вообще-то уважающий себя мужчина должен построить дерево, вырастить дом и посадить сына)))
@jimhawkins2483
@jimhawkins2483 Год назад
Большое спасибо за очередной урок!
@debasher
@debasher 5 лет назад
Как вариант: HTML: Menu1 SubMenu1 Menu2 SubMenu1 CSS: .SubMenu { visibility : collapse; z-index: 1; height : 0px; border: 2px solid black; width : 0px; left: 60px; top: -20px; background-color : burlywood; position: relative; } .Menu { z-index: 0; height: 20px; width: 100px; border: 2px solid black; background-color: burlywood; margin: 5px; text-align: center; vertical-align: central; padding: 4px; } ul { list-style-type: none; } JS: function ShowSubMenu(element) { for (var i = 0; i < element.children.item(0).childElementCount; i++) { var obj = element.children[0].children[i]; obj.style.height = "20px"; obj.style.width = "100px"; obj.style.visibility = "visible"; } } function HideSubMenu(element) { for (var i = 0; i < element.children.item(0).childElementCount; i++) { var obj = element.children[0].children[i]; obj.style.height = "0px"; obj.style.width = "0px"; obj.style.visibility = "collapse"; } } Надеюсь кому то помог.
@mariabloom5145
@mariabloom5145 2 года назад
Спасибо огромное!😊
@alexandermatt
@alexandermatt Год назад
Красава реально
@k777ig
@k777ig 7 лет назад
парень продолжай!!!
@SuprunAlexey
@SuprunAlexey 7 лет назад
Конечно!
@User-es9rh
@User-es9rh 4 года назад
​@@SuprunAlexey о чем вы? смысл от этих выпадающих меню если они показывают один и тот-же контент
@azelsky
@azelsky 6 лет назад
можешь пожалуйста объяснить document.getElementById('nav').onmouseover = function(event), в каких случаях мы ставим event
@apa6368
@apa6368 4 года назад
слишком быстро и непонято (
@user-mp5ig1ge5y
@user-mp5ig1ge5y Год назад
Спасибо за уроки очень помоголи 😁
@dmitry_beresten
@dmitry_beresten Год назад
Дякую за цікаве відео!
@user-wr2df9re1n
@user-wr2df9re1n 3 года назад
s[0].style.display = 'block' Это же по идее будет всегда раскрывать первое submenu, не важно наведем мы левое и правое, или я что-то не понимаю?
@nepcz
@nepcz 3 года назад
Видео о том как сделать нерабочее выпадающее меню.
@user-zu5pj8mo3u
@user-zu5pj8mo3u 5 лет назад
подскажите неуку если будет более одного подменю var target = event.target; if(target.className == 'menu-item'){ var s = target.getElementsByClassName('submenu'); closeMenu(); for(var i = 0; i < s.length; i++){ console.log(s); s[i].style.display = 'block'; } } } выводит только одно подменю подскажите что делаю не так
@jplusplus683
@jplusplus683 6 лет назад
Спасибо за урок, один вопрос как срабатывает function(event)? где берется события?
@jimhawkins2483
@jimhawkins2483 Год назад
здраствуйте, ответ нашли?) я только приступил к практике и тоже интересно)
@user-po1ez6ke6m
@user-po1ez6ke6m Год назад
@@jimhawkins2483 он не рандомно так аргумент в функии назвал, ивент это как бы встроенная функция внутри addeventlistener
@user-po1ez6ke6m
@user-po1ez6ke6m Год назад
@@jimhawkins2483 и с этим ивентом можно работать, например event.preventDefault() запрещает странице перезагружатся если это необходимо
@jimhawkins2483
@jimhawkins2483 Год назад
@@user-po1ez6ke6m спасибо за ответ, не скажу что стало намного ясней, но я покопаю)
@Nodorgrom
@Nodorgrom 6 лет назад
Это, только попрактиковаться, с выборами селекторов, с перебором массива, с работой логики данного меню. Вся эта схема работает в три строчки через CSS, что еще более нативнее, чем JS. Я имею ввиду через .class:hover. А если нужна задержка, то через property cubic-bezier мы можем настроить скрытие по своему желанию. А так лайк за труд))
@standarttechnology4477
@standarttechnology4477 Год назад
Class.hover это при наведении, а как сделать чтобы было active для одной из 5 кнопок и это могло меняться. Можно как то через css или в данном случае только js?
@nikitafromov9269
@nikitafromov9269 7 лет назад
Объясните пожалуйста, почему именно s[0](после функции closeMenu() ) s[0].style.display="inline-block";
@tutovMaksym
@tutovMaksym 5 лет назад
У меня та же проблема, при наведении на menu-item всегда появляется только первое submenu, естественно при подмене s[1] будет видно второе submenu. Это понятно, что число в массиве, но у автора работается все адекватно
@artomka8632
@artomka8632 3 года назад
я всё ссделал у меня всё правильно работает как я хотел!!!!))))) спасибо
@gratgrating2875
@gratgrating2875 7 лет назад
Хорошее видео, есть один момент: Если крепить скрипт в head'е, работать не будет (в отличии от предыдущих уроков). Решается переносом в body. Обращаю на это внимание, т.к. сам споткнулся.
@user-fb2bl7dn6k
@user-fb2bl7dn6k 7 лет назад
Правильно, т.к. к моменту загрузки скрипта в head`е, страницы(body) ещё не существовало
@vladmart5268
@vladmart5268 7 лет назад
defer в помощь || window.onload = () => {}
@user-mr6yt2lz5v
@user-mr6yt2lz5v 5 лет назад
Спасибо Вам.
@sergeysergey4325
@sergeysergey4325 5 лет назад
спасибо тебе добрый человек!
@22prize22
@22prize22 5 лет назад
Не работает( Ни код автора, ни коды из комментов.
@Oksana_Bon
@Oksana_Bon 4 года назад
единственное непонятно это console.log(event.target); но без него подменю не исчезает и вроде как можно заменить на window.onload = function() {closemenu();}
@arayoflight
@arayoflight 4 года назад
Вы пишете для мыши, соответственно для тачскринов код бесполезен. Сейчас можно для десктопов, ноутов использовать hover, а код js писать для тачскринов, где hover не работает.
@nikgus4862
@nikgus4862 3 года назад
Впервые с первого раза!
@user-mg7gu1bk1j
@user-mg7gu1bk1j 6 лет назад
как это в ссылки сделать там код придёться как то менять помогите!!!!
@cheekibreeki9315
@cheekibreeki9315 3 года назад
Странно, очень странно реализовано. Я вижу это во вложенном списке, к элементам которого добавляется класс "hover" при наведении. По крайней мере на olx и розетке именно такая реализация.
@marytoch9357
@marytoch9357 4 года назад
Всё круто и понятно очень. Без лишнего. Одного не понимаю для чего внутри функции closeMenu() получать переменную menu ведь она не используется вроде как. Буду благодарна за пояснение ))
@PACEMAKER76
@PACEMAKER76 Год назад
переменная меню вообще не нужна здесь. в строгом режиме данный код не будет работать, если не убрать эту строчку
@CruiseJobUA
@CruiseJobUA 7 лет назад
Когда создаешь переменные, давай им читабельный имена, а не просто "s".
@SuprunAlexey
@SuprunAlexey 7 лет назад
Вроде не особо грешил таким
@CruiseJobUA
@CruiseJobUA 7 лет назад
Смысл в том что бы писать читабельный код, а не просто написать код который будет работать. Показывай правильный пример, другие буду учиться от тебя. Я даже на самом начальном уровне, и то понимаю что переменную надо называть относительно того что она определяет. Рассмотри мое предложение.
@SuprunAlexey
@SuprunAlexey 7 лет назад
Конечно - конечно
@debasher
@debasher 5 лет назад
ошибаетесь, важным переменным да нужно, но есть такое понятие как технические переменные, которые долго не живут и в которые вообще лучше не лезть, кроме того на первом этапе написания кода готовится рабочий код, а вот на последующих а-ля оптимизация, рефакторинг и т.п. код начинает вылизываться и тогда переменным и дают осмысленные названия.
@pavelmozil6007
@pavelmozil6007 4 года назад
Не пойму,зачем ты в методе closeMenu() создал бесполезнуюю переменную menu,которая не используется ?
@ant3413
@ant3413 2 года назад
потому что код был слизан с другого источника,а видос тупо рекламку вставить
@user-xc6ns4tl3z
@user-xc6ns4tl3z 5 лет назад
Дэбажить код алертами :D Дада помню как "алертировал" чуть ли не каждую строку) Потом левел-апнулся и начал использовать console.log :D
@oliverreviews8496
@oliverreviews8496 4 года назад
а след лвл использовать nod'у))0
@nikolaiUlianov
@nikolaiUlianov 4 года назад
Зачем нужна переменная menu в функции closeMenu? Я не вижу чтобы она где-то понадобилась?
@Suhnya
@Suhnya 5 лет назад
Семантика на сегодня понимает и можно не оборачивать в div
@user-fr9oc4rh7y
@user-fr9oc4rh7y 7 лет назад
Зачем устанавливать блокам меню position ?
@yaroslav.grigoryev
@yaroslav.grigoryev 7 лет назад
Спасибо за урок! В function closeMenu() для чего переменная menu? Лишняя строка в коде...
@SuprunAlexey
@SuprunAlexey 7 лет назад
Спасибо!
@aibeksydygaliev7335
@aibeksydygaliev7335 7 лет назад
Точно! Я тоже это подметил!
@user-zz2lj5nr7n
@user-zz2lj5nr7n 3 года назад
а про то что не работает, очень много подобных уроков в ютюбе, все повторил а код не работает ...
@vip51000
@vip51000 5 лет назад
По вашему мнению, материалы по javascript 2016 года, являются еще актуальны ? (хочу начать учить)
@vip51000
@vip51000 5 лет назад
@Alex Lastname спасибо за ответ
@artemkatr9483
@artemkatr9483 3 года назад
@@vip51000 ответ не видно, что за ответ?
@vip51000
@vip51000 3 года назад
@@artemkatr9483 ответ был удален, но по-моему да
@user-yu9qr7ii4m
@user-yu9qr7ii4m 3 года назад
У меня 1 вопрос event в функции function(event) это простое название или это специальный аргумент ?
@user-lr2sw2zi2r
@user-lr2sw2zi2r 3 года назад
Разобрался?)
@user-yu9qr7ii4m
@user-yu9qr7ii4m 3 года назад
@@user-lr2sw2zi2r ага)
@elvindesign6350
@elvindesign6350 5 лет назад
Есть теги nav ul li a почему бы не использовать их?)
@thegame8589
@thegame8589 3 года назад
відео 2016 року)І перемінна let замість var теж частіше використвується)
@stanislavmalyshev5209
@stanislavmalyshev5209 6 лет назад
Спасибо за урок. Не все пока что понятно, буду разбираться. Код прописал и прикрепил в комменте. Как понял код срабатывает при event(движение мыши), определяет на что она наведена. Если это пункт меню, то открывается подменю, а все остальные подменю закрываются. Это все работает пока указатель находится на полях меню и подменю. document.getElementById("nav").onmouseover = function(event) { var target = event.target; if (target.className == "menu-item") { var s = target.getElementsByClassName("submenu"); closeMenu(); s[0].style.display='block'; } } document.onmouseover=function(event) { var target = event.target; console.log(event.target); if (target.className != 'menu-item' && target.className != 'submenu' ){ closeMenu(); } } function closeMenu() { var menu = document.getElementById('nav'); var subm = document.getElementsByClassName("submenu") for (var i=0; i < subm.length; i++) { subm[i].style.display = 'none'; } }
@user-zq1if3uv8i
@user-zq1if3uv8i 6 лет назад
Ладошка с пальцем:D
@LSMacox
@LSMacox 5 лет назад
Не знаю как у него получилось сделать без ошибок. Но вот одного я не понимаю document.getElementById("nav").onmouseover = function(event){ var target = event.target; if( target.className == 'menu-item' ){ var m = document.getElementsByClassName("menu-item"); var s = document.getElementsByClassName("submenu"); closeMenu(); s[0].style.display = "block"; //Здесь если будет так, то он будет первый элемент открывать. А если так: "for ( var i = 0; i < m.length; i++){ if (m[i] == target) { s[i].style.display = "block"; }", то куда на вел там и открывает. Как в видео. } } } document.onmouseover = function(event){ var target = event.target; console.log(event.target); if( target.className != 'menu-item' && target.className != 'submenu'){ closeMenu(); } } function closeMenu(){ var subm = document.getElementsByClassName("submenu"); for( var i = 0; i < subm.length; i++){ subm[i].style.display = "none"; } }
@nikbu5811
@nikbu5811 3 года назад
Что значит строчка кода for (var i =0; i
@kurrama7831
@kurrama7831 3 года назад
ну там ж есть три елемента с класом "submenu", а этот цикл их просто по очереди перебирает и если ты работаешь с несколькими елементами, то так ты говоришь функции: "там есть короче елемент i (обьявил), но он там не один поэтому ты давай ка перебери их всех до момента i
@panmazurokbunpalolecsandr178
@panmazurokbunpalolecsandr178 4 года назад
У меня у одного оно вообще не работает? Я даже его даа раза переписал и проверил но код все равно не работает Но все же спасибо за урок
@edkar4629
@edkar4629 4 года назад
Тож самое
@MILAYA_02
@MILAYA_02 3 года назад
а ты случайно не забыл подключить js файл в Html коде?
@natkasazonowa227
@natkasazonowa227 3 года назад
Тоже не работает,js к html подключила,проверила два раза все без толку😥
@artomka8632
@artomka8632 3 года назад
Вы наверное js фаил к HTML НЕ подключили
@dis.3225
@dis.3225 3 года назад
@@artomka8632 все подключено, код перепроверила, но что-то не работает(
@user-cl1gh4ho5b
@user-cl1gh4ho5b 6 лет назад
Ну вообще норм, но только тебе надо больше говорить что ты пишешь
@user-cl1gh4ho5b
@user-cl1gh4ho5b 6 лет назад
минус в том когда забираешь курсор я меню другой класс пропадает второй минус что это можнj делать даже лучше на чистом css
@aveomathman5532
@aveomathman5532 6 лет назад
Да, можно. Я сам так раньше делала, только так много css кода получается, а смысл этого видео-урока в обучение основ js. И он в начале сказал же, что это не идеальный пример
@user-fs4se7uf8c
@user-fs4se7uf8c 5 лет назад
У меня одного при обновлении, блоки submenu отображаются и после ввода курсора мыши на экран изчезают и далее все работает как надо?? Я добавил : window.onload= function(){ Var s = document.getElementsByClassName('submenu'); for( var i=0; i
@TORREScs
@TORREScs 5 лет назад
у всех) но тебе одному не похрен)))) и мне)
@TORREScs
@TORREScs 5 лет назад
и кстати чтобы от этого избавиться достаточно в начале кода прописать closeMenu()
@catshannon5064
@catshannon5064 7 лет назад
Здравствуйте! У меня тут два вопроса: Зачем в первой функции вызываем closeMenu(); И как решить проблему Uncaught TypeError: Cannot set property 'onmouseover' of null
@SuprunAlexey
@SuprunAlexey 7 лет назад
Что б была возможность закрыть меню. Решить проблему очень просто - правильно переписать код!
@durd6856
@durd6856 7 лет назад
Web Developer Blog Здравствуйте, не до конца понял строчку: var target = event.target - для чего она нужна? Изучаю практику и теорию параллельно, чтобы запомнить так сказать..
@durd6856
@durd6856 7 лет назад
Web Developer Blog Разобрался с этим вопрос снят
@thekuzyafast8510
@thekuzyafast8510 6 лет назад
А если он в жопу правильно переписан и всё равно сук ни*уя не работает, что дальше?
@thekuzyafast8510
@thekuzyafast8510 6 лет назад
Уже работает, извини, но это просто не может быть ошибкой, проблема была даже не в js файле...
@ulbolsynzh
@ulbolsynzh 3 года назад
как вы одновременно пишете на нескольких строках?
@alexeyz1267
@alexeyz1267 2 года назад
Выбираешь строки с зажатым Alt
@ivankolesnyk155
@ivankolesnyk155 7 лет назад
у меня при обновлении страницы, видно все submenu когда мышь веду ниже кнопки обновить там где начинается страница они пропадают и начинают работать как надо
@SuprunAlexey
@SuprunAlexey 7 лет назад
Перепишете все верно, где то могли ошибиться
@user-xp1uz3xz4t
@user-xp1uz3xz4t 7 лет назад
У меня та же ситуация. Вы нашли в чем проблема?
@ivankolesnyk155
@ivankolesnyk155 7 лет назад
не нашол((
@user-kq2tk1oy3c
@user-kq2tk1oy3c 7 лет назад
я знаю ребята как вам помочь тут дело в css .menu-item .submenu{display:none;} допишите
@badex6056
@badex6056 3 года назад
Если такой простой список, то куда проще просто использовать css и псевдокласс Hover.
@vladgolodok3705
@vladgolodok3705 5 лет назад
не понял строку кода s[0].style.display='block'. Что такое 'block' и для чего s[0]?
@user-lr2sw2zi2r
@user-lr2sw2zi2r 3 года назад
А теперь понимаешь?)
@zento4172
@zento4172 4 года назад
Почему у меня "TARGET" не светится
@youxxxgun9001
@youxxxgun9001 5 лет назад
Почему браузер ругается на "onmouseover"?
@user-fk3cu6eg6q
@user-fk3cu6eg6q 5 лет назад
И у меня, объясните почему
@user-zz2lj5nr7n
@user-zz2lj5nr7n 3 года назад
код выравнивается в DOM ctrl a + crtl +k+f
@Streetap
@Streetap 7 лет назад
Давайте напишем пятнашки на javvascript!
@armenmanadaryan2492
@armenmanadaryan2492 4 года назад
Uncaught TypeError: Cannot set property 'onmouseover' of null at main.js:1
@SuprunAlexey
@SuprunAlexey 4 года назад
Посмотрите код у меня
@oleksandrkostyuk9696
@oleksandrkostyuk9696 4 года назад
та же проблема, проверил уже каждую букву кода пару раз, все сходиться но ошыбку выдает(((
@artemgavryushin4693
@artemgavryushin4693 4 года назад
@@oleksandrkostyuk9696 забей! у меня также (по коду все верно)
@neokanal
@neokanal 4 года назад
@@artemgavryushin4693 понял в чем беда? у меня так же
@user-sf3sw7qr7k
@user-sf3sw7qr7k 7 лет назад
дайте ссылку на скачивание, или текст отправьте
@aibeksydygaliev7335
@aibeksydygaliev7335 7 лет назад
Держи. Первые 4 урока drive.google.com/open?id=0B5Uq7Wct5YVBNFRaWm9ySEdQc0k
@arhim7650
@arhim7650 3 года назад
Я конечно понимаю, что это практика по Js, но блин, два закрывающихся Дива в ряд, этож не читабельно нефига. уже представляю, как подобное будет выглядеть в каком нить длинном лендинге, когда тебе надо будет вынести кусок кода, за пределы одного из контейнеров. Аж мурашки по спине пошли.
@SuprunAlexey
@SuprunAlexey 3 года назад
Ужас
@SuprunAlexey
@SuprunAlexey 3 года назад
Казнить 😇
@arhim7650
@arhim7650 3 года назад
@@SuprunAlexey это как читать код, в котором все закидано this'ами. Воде коротко, вроде все даже хорошо работает, но что там происходит, даже разработчик на следующий день не скажет.
@Tokamame
@Tokamame 7 лет назад
Дебажить код alert-ами)) Начинающий программист, вы имели ввиду? Самому-то не надоедает эти окошки мышкой закрывать? Познакомили бы уже с console.log.
@SuprunAlexey
@SuprunAlexey 7 лет назад
Новичкам так проще, они сразу видят действие, до консоли позже доходит)
@knocker6970
@knocker6970 Год назад
Не работает почему то 😢 Уже который урок подряд не работает!!!
@joaquinbastos3489
@joaquinbastos3489 4 года назад
Очень интересно но ничего не понятно)
@KUBEx-td4ix
@KUBEx-td4ix Год назад
Нуууууу, ладно как для понимания сойдет, но не все так тут гладко. Рекомендую найти другой ролик. Зашел, посмотреть как раз что сделаю за 10минут видео. Класть на css, но к js вопросики
@s12jnr1jnasd
@s12jnr1jnasd 6 лет назад
emmet рулит .nav>.item-menu*4>.submenu
@SuprunAlexey
@SuprunAlexey 6 лет назад
Согласен
@ieron
@ieron 4 года назад
Реализовал на Jquery, работает точно так же, кто может подскажите, что можно убрать или добавить ;) $('.menu-item').mouseover(function(event){ let target = event.target; let s = target.getElementsByClassName('submenu'); closeBlock(); $(s).show(); }); $(document).mouseover(function(event){ let target = event.target; if (target.className == 'menu-item' || target.className == 'submenu') { $(target).show(); } }); function closeBlock(){ $('.menu-item').mouseout(function(){ $('.submenu').hide(); }); }
@user-ct3bf8qk2q
@user-ct3bf8qk2q 6 лет назад
Бля, легче на чистом CSS написать.
@RollbackToStart
@RollbackToStart 5 лет назад
Вы правы, однако и это знать тоже нужно, не всё же Вы будете писать на чистом HTML + CSS.
@xOceanSpirit
@xOceanSpirit 5 лет назад
@@RollbackToStart подобную хрень лучше и не знать. Одноуровневое меню, открывающее при ховере очень легко реализуется без скрипта. Это дичь делать такую анимацию при помощи JS.
@nikitamihalyov7450
@nikitamihalyov7450 7 лет назад
Это не самый простой способ, это максимально усложнённый способ Всё можно сделать проще с помощью CSS: .submenu { display: none; } .menu-item:hover .submenu { dispaly: block; } Всего лишь две строчки кода CSS
@SuprunAlexey
@SuprunAlexey 7 лет назад
Я вам говорил о практике Js и о понимании примитивных действий, так же умении их воспроизводить.
@kimblinov1594
@kimblinov1594 6 лет назад
суть не сделать как проще, а понять логику на JS
@edgarcherqezyan7937
@edgarcherqezyan7937 6 лет назад
так не работоет что значет .menu-item:hover .submenu
@rovnogames8162
@rovnogames8162 6 лет назад
.submenu { display: none; } .menu-item:hover .submenu { dispaly: block; } hover сам это выполняеться действие при наведении то есть при наведении на submenu выпадет блок потому что в .submenu он скрыт, а в hover.submenu написано что это есть блочным элементом значит при наведении будет показываться блочный елемент то есть видимым
@sdsaasdasd4683
@sdsaasdasd4683 6 лет назад
откуда интересно такие умники лезут??? автор упомянул о том, что это не лучший способ как минимум 2 раза.
@hewston2733
@hewston2733 7 лет назад
как ты продублировал строку 3 раза?
@SuprunAlexey
@SuprunAlexey 7 лет назад
Sublime text творит чудеса
@biLLie_wiLLie
@biLLie_wiLLie 7 лет назад
Установи Emmet для Sublime Text и посмотри урок о нем. На RU-vid много о нем сказано.
@user-cl1gh4ho5b
@user-cl1gh4ho5b 7 лет назад
Нет, это самый непростой способ. Просто сделать на css!!! Сделать список, поставить его в строчку, потом написать стили, немного html в начали и всё...
@SuprunAlexey
@SuprunAlexey 7 лет назад
Это практика JavaScript что бы научится использовать Js
@user-xr1ek1mw8e
@user-xr1ek1mw8e 11 месяцев назад
Чтобы функция работала корректно ее необходимо обернуть в обработчик события 'DOMContentLoaded', потому что она использует метод getElementById для доступа к элементу с идентификатором 'nav'. Этот метод возвращает элемент только после того, как DOM-структура документа была полностью построена, что происходит при событии 'DOMContentLoaded". То-есть в window.addEventListener('DOMContentLoaded', function() { }, true);
@ShooterStar
@ShooterStar 6 лет назад
сейчас бы меню из дивов делать.....
@mirommefumimasa33
@mirommefumimasa33 4 года назад
чувак 2016 год,тогда это было нормально
@jeb_7749
@jeb_7749 4 года назад
@@mirommefumimasa33, конечно. JS только в 2015 появился!
@alexandrbutsaiev7249
@alexandrbutsaiev7249 5 лет назад
Доработанный мною код! Реагирует на клик! document.getElementById('nav').onclick = function(event) { var s = event.target.getElementsByClassName('submenu'); var target = event.target; if (s[0].classList == 'submenu active'){ s[0].classList.remove('active'); } else if (target.className == 'menu-item') { closeMenu(); s[0].classList.add('active'); console.log(target.className) } }; document.onclick = function(event){ var target = event.target; if(target.className != 'menu-item' && target.className != 'submenu active'){ closeMenu(); } }; function closeMenu(){ var subm = document.getElementsByClassName('submenu'); for(var i = 0; i < subm.length; i++){ subm[i].classList.remove('active'); } }
@PacoOfficial
@PacoOfficial 7 лет назад
качество кода оставляет желать лучшего)) где то стоят ' ' одинарные, где то " ' двойные, знак = так же где то с пробелами, где то без.. вообще рандомно, просто ппц чувак, ну да ладно, главное показал как работает и то хорошо))
@SuprunAlexey
@SuprunAlexey 7 лет назад
Идеалу нет предела
@aibeksydygaliev7335
@aibeksydygaliev7335 7 лет назад
Главное код работает! Ну а двойные или одинарные кавычки - это можно самому регулировать! Молодец парень - там держать!
@noraunt5548
@noraunt5548 7 лет назад
Paco, ты вообще вездесущ, и в тематических группах ВК тебя постоянно вижу и под видосами.
@niamchannel8520
@niamchannel8520 3 года назад
Всем привет, данный код я написал на локальном сервере в Sublime Text 3 ничего не работает, но когда поместил в JSFiddle( jsfiddle.net/8oLg63bm/ ) всё заработало Вопрос ПОЧЕМУ?
@user-cg4pk1hv7y
@user-cg4pk1hv7y 5 лет назад
div, div,div....ссылка-див, список -див все див
@_CogaR_
@_CogaR_ 10 месяцев назад
Замени "onmouseover" на "onclick"
@key3684
@key3684 6 лет назад
Что за прога?
@SuprunAlexey
@SuprunAlexey 6 лет назад
sublime text?
@elmaga4486
@elmaga4486 4 года назад
могу подсказать как бесплатно скачать phpstorm, webstorm)
@SuprunAlexey
@SuprunAlexey 4 года назад
Со студенческим
@elmaga4486
@elmaga4486 4 года назад
@@SuprunAlexey неа
@SuprunAlexey
@SuprunAlexey 4 года назад
Легальным способом?
@elmaga4486
@elmaga4486 4 года назад
@@SuprunAlexey к сожалению пиратский(новый версии без вирусов и т.д.). Ну я очень доволен. Правда немного заморачиваться надо когда устанавливаеш ну могу помочь если будут вопросы/проблемы
@darikaki647
@darikaki647 4 года назад
сейчас можно в ксс3 забабахать это меню
@SuprunAlexey
@SuprunAlexey 4 года назад
да и тогда можно было, суть же в самом процессе
@armenmanadaryan2492
@armenmanadaryan2492 4 года назад
помимо того что вы не объяснили что к чему еще и ошибки во всю жаль что таким как мы приходится натыкаться на таких как вы и впустую тратить время ,,,,,,,,,,
@SuprunAlexey
@SuprunAlexey 4 года назад
Нет ошибок
@alexandrgusletsov2567
@alexandrgusletsov2567 4 года назад
@@SuprunAlexey , здравствуйте ! Интересно у вас учится! Но вот первый раз применил что то на практике и не получается! Подскажите как найти ошибку! вот страница моя : Делаю появляющиеся значки иконок под моделями обуви! Alexandrgentlmen.github.io
@alexandrgusletsov2567
@alexandrgusletsov2567 4 года назад
@@SuprunAlexey , еще не понятно почему в моем примере сразу же начинает при любом движении срабатывать код добавления display:none ! хотя я даже до блока с id еще не направил мышь
@yevhentarik4551
@yevhentarik4551 5 лет назад
Почему у меня не работает ничего ?
@SuprunAlexey
@SuprunAlexey 5 лет назад
Потому что неправильно написал
@FA-tu5ti
@FA-tu5ti 2 года назад
@@SuprunAlexey Всё правильно!
@user-yb9uf8uz8k
@user-yb9uf8uz8k 3 года назад
Такие вещи лучше на css писать
@mishapython2241
@mishapython2241 6 лет назад
Что за редактор?
@mishapython2241
@mishapython2241 6 лет назад
А у меня тож такой же)
@user-vd2kf8sx4h
@user-vd2kf8sx4h 6 лет назад
как называется?
@mtmi2107
@mtmi2107 6 лет назад
Sublime Text 3
@yamahabiker316
@yamahabiker316 5 лет назад
Бл* спасибо, конечно, за урок, НО РЕКЛАМЫ ТО КУЛИ ТАК МНОГО НАПИХАЛ??))
@user-hy4tp3rj6z
@user-hy4tp3rj6z 6 лет назад
Реклама каждые 2 минуты задалбывает !!! Х_Х невозможно смотреть видео, и так в каждом видео =/
@SuprunAlexey
@SuprunAlexey 6 лет назад
А вы ее закрывайте и не парьтесь
@user-hy4tp3rj6z
@user-hy4tp3rj6z 6 лет назад
так вот и напрягает каждые 2 минуты закрывать! то всплывающие, то реклама включается
@xqz666
@xqz666 6 лет назад
addd block поставь
@user-ut7dh6iq1l
@user-ut7dh6iq1l 6 лет назад
Антон М, а ты клавиатуру новую купи, либо английский язык изучи
@maxbelka4883
@maxbelka4883 4 года назад
А какие к автору претензии? Ютуб делает рекламу, не автор
@s12jnr1jnasd
@s12jnr1jnasd 6 лет назад
Но JS не пашет -----------------------------------------------------------------------------JS------------------------------------------------------------------------------------------------------------------------- document.getElementById('nav').onmouseover = function(event){ var target = event.target; if(target.ClassName == 'menu-item'){ var s = target.getElementsByClassName('submenu'); closeMenu(); s[0].style.display='block'; } } document.getElementById('nav').onmouseover = function(event){ var target = event.target; console.log(event.target); if(target.ClassName !== 'menu-item' && target.className!='submenu'){ closeMenu(); } } function closeMenu(){ var menu = document.getElementById('nav'); var subm = document.getElementsByClassName('submenu'); for(var i =0;i
@vladvlad6339
@vladvlad6339 6 лет назад
ClassName с маленькой надо)
@leontiimicsanschi6153
@leontiimicsanschi6153 3 года назад
ES6? Не, не слышал.
@apexnuts9785
@apexnuts9785 3 года назад
что это за ошибка ? yadi.sk/i/LM6l534t2iDy8w
@apexnuts9785
@apexnuts9785 3 года назад
Я пробовал убирать кавычки, не фурычит
@SuprunAlexey
@SuprunAlexey 3 года назад
У меня не открывает Яндекс, на телефоне нет впн, позже гляну. Почитайте коменты, тут многие ошибки описаны
@konstantyn3980
@konstantyn3980 Месяц назад
ниче не понятно
@belokopitov
@belokopitov 5 лет назад
толком не объяснил ни чего.....смысл от этого видео по копирку списать....хреновый с тебя преподаватель
@SuprunAlexey
@SuprunAlexey 5 лет назад
Работаем
@belokopitov
@belokopitov 5 лет назад
@@SuprunAlexey надеюсь)
@wickedtorpedo75
@wickedtorpedo75 4 года назад
Скачал код с какого то форума и тупо перезаписал на камеру и называешь это видеуроком 😲😲😲
@m.s.5610
@m.s.5610 Год назад
Народ, кто "по-глазастее", в чём разница(первый скрипт не работает, а второй работает). 1. document.getElementById('nav').onmouseover = function(event) { var target = event.target; if (target.className == 'menu-item') { var s = target.getElementsByClassName('summenu'); closeMenu(); s[0].style.display='block'; } } document.onmouseover = function(event) { var target = event.target; console.log(event.target); if (target.className != 'menu-item' && target.className != 'summenu') { closeMenu(); } } function closeMenu() { var menu = document.getElementById('nav'); var subm = document.getElementsByClassName('summenu'); for (var i = 0; i < subm.length; i++) { subm[i].style.display="none"; } } 2. document.getElementById('nav').onmouseover = function(event) { var target = event.target; if (target.className == 'menu-item') { var s = target.getElementsByClassName('submenu'); closeMenu(); s[0].style.display = 'block'; } } document.onmouseover = function(event) { var target = event.target; console.log(event.target); if (target.className != 'menu-item' && target.className != 'submenu') { closeMenu(); } } function closeMenu() { var menu = document.getElementById('nav'); var subm = document.getElementsByClassName('submenu'); for (var i = 0; i < subm.length; i++) { subm[i].style.display = "none"; } }
@Ivan-rc4it
@Ivan-rc4it 5 лет назад
Зачем в .submenu писать свойство cursor: pointer, если оно и так наследуется от родительского элемента?
@CruiseJobUA
@CruiseJobUA 7 лет назад
Почему сласс .munu-item добавлен впереди .submenu ?.
@SuprunAlexey
@SuprunAlexey 7 лет назад
Потому что submenu идет после menu item, вы когда наводите на menu item у вас появляется submenu.
Далее
A meal of dumplings is in hand!#shortvideo #funny
00:16
A meal of dumplings is in hand!#shortvideo #funny
00:16