Простое модальное окно (Popup окно)
HTML-код
- Опубликовано: 22 янв 2023
- Создание простого всплывающего popup окна с помощью HTML + CSS + JS.
👁🗨 Исходники в телеграм канале: t.me/frontend_du2
👁🗨 Discord: / discord
👁🗨 VK: frontend_du2
👁🗨 Дзен: dzen.ru/frontend_it
Всегда рад вашей поддержке и подписке.
Вы выдающийся человек, ещё никто так понятно для меня не мог объяснить как делать модальные окна! Огромное вам спасибо, любви, удачи, и всего самого наилучшего!
Большое спасибо Вам за такие теплые слова ☺ безумно приятно читать такой комментарий 🙈 надеюсь и другие видео помогут Вам в изучении))
пишу для поддержки канала. Большое вам спасибо за ваши труды
Большое спасибо за вашу постоянную поддержку ) Комментарии, которые вы оставляете вдохновляют меня снимать такие ролики ) Вы лучшие
Александр, потрясающее видео!!! Показываете с разъяснениями, с живым примером!!! Всё сразу становится понятным😎 с нетерпением буду ждать подобные видео👏👏👏
Спасибо за ваш крутой отзыв :) не всегда получается быстро отвечать)) но я стараюсь 😇
Отличное видео, объяснение куда точнее, чем у наставников ЯндексПрактикума. Ты молодец, продолжаю учиться благодаря таким видео))
Спасибо вам огромное. Всё очень понятно объясняете. Много раз спасали ваши видео. 👏
Спасибо за ваш важный и приятный отклик )
Спасибо огрмоное за Вашу работу!!! Обясняете просто на высшем уровне, все просто понятно и доступно.
Большое спасибо :) Это очень приятно )
Александр , спасибо за крутое видео ! В этом году Вы набрали высокий темп по выпуску видео, надеюсь весь год будет такой же продуктивный !
Спасибо вам :) Да, за месяц довольно много сделал роликов :) Надеюсь так и будет продолжаться. Это прибавляет к росту канала :)
Oгромное спасибо за видео, всё просто и понятно(почти), до этого 3-4 видоса смотрел и вообще ничего не понял и ничего работало, но после ВАШЕГО всё заработало, спасибо. Однозначно лайк и подписка👍
Большое спасибо, что поделились вашим мнением. Ролик получился долгим, но я старался ничего не упустить ))
Очень классные видео!
Но хотелось бы увидеть от вас видео про деструктуризацию в js :)
Александр, еще раз выражаю Вам свою огромную благодарность. Ошибку я уже нашла (пропустила точку) и теперь все отлично работает.
Спасибо за ваш комментарий😊 рад, что у вас получилось исправить ошибку 🤗 надеюсь и другие видео курса будут вам полезны))
спасибо большое, теперь всё кажется понятным и доступным. Рад что подписался на ваш канал!
Спасибо вам. А я рад вашему участию и подписке :) Оставайтесь на канале ))
Отличное видео. Всё подробно, все ясно. Без лишней воды!
Спасибо вам, Очень рад, что ролик вам понравился :)
Благодарю. Просто, полезно и доходчиво.
это лучшее видео из тех, что я просмотрела. Все просто и понятно. Благодарю! Подписываюсь!
Спасибо за подписку и комментарий 🤗 ваша поддержка очень важна!)) надеюсь и другие видео канала будут вам полезны))
Очень круто, спасибо!! Приятно слушать и поглощать информацию))
👍👍👍Спасибо большое!!! Все отлично объяснили!
Спасибо вам :) Рад, что смог помочь и объяснить :)
Спасибо за подробное видео! Внёс корректировки в свой проект :)
Твои видео очень помогают!
Я обычно читаю материалы новой темы, вникаю и пытаюсь понять.
А потом перехожу к тебе с целью "Так, а теперь давай поймем, что это? И как это понимать и пользоваться
"
Очень приятно читать такие комментарии 🙈 ваша поддержка очень помогает! Спасибо 🤗
Начал делать курсовой проект по базовому JS от Skillbox, Александр, без вас я бы сюда не добрался. Спасибо и обязательно продолжайте то, что делаете!
Благодарю Александр 😃 у тебя Отлично получается 👏. Грид - супер!
Большое спасибо )) Буду работать над материалом по теме гридов :)
Видео оказалось очень полезным, спасибо!
Спасибо вам за отзыв) Рад, что смог рассказать что то интересное
Хорошая анимация, внесу изменения в свои работы) будет красота) Благодарю за видео 👍
Спасибо вас. Здорово, что вы захотели применить это в своей работе. Надеюсь это ее украсит :)
Классное видео, спасибо большое! Наверное хотелось бы чуть больше про js часть послушать
Очень интересная подача у автора, спасибо контент)
Большое спасибо за ваш приятный отзыв :)
Александр, спасибо!
Спасибо вам взаимно :)
Александр, большое спасибо за полезное видео!
Спасибо за ваш комментарий😊
Спасибо большое за видео. Все очень понятно. Модальные окна больше не пугают))
Спасибо вам. Думаю еще один ролик подобный запишу, что бы закрепить )
Спасибо тебе огромное!!!!
Мне очень помогло твое видео
Огромнейшая благодарность!
Благодарен вам за ваш отзыа )
Видео супер. Очень полезный контент для начинающих и не только. Желаю процветания вашему каналу. Ну и успехов🎉🎉🎉
большое спасибо за такой приятный и важный комментарий )
Всё получилось. Отличный урок.
Очень рад, что ролик был полезным :) Спасибо
Очень классное видео, помог впомнить и стили, и js, и открыть новые знания!
Спасибо за ваш отзыв 🤗 надеюсь и другие видео на канале будут вам полезны
в таком маленьком видео так много полезной информации
спасибо)
Спасибо за ваш комментарий 😊 надеюсь и другие видео курса будут вам полезны
Многие зададутся вопросом, как реализовать несколько popup, это 100%
делюсь решением этого вопроса:
// Функция для открытия модального окна
function openModal(modalId) {
document.getElementById(modalId).classList.add("open");
}
// Функция для закрытия модального окна
function closeModal(modalId) {
document.getElementById(modalId).classList.remove("open");
}
// Обработчики событий для кнопок открытия модальных окон
document.getElementById("open-popup-btn_ksen").addEventListener("click", function() {
openModal("popup_ksen");
});
document.getElementById("open-popup-btn_another").addEventListener("click", function() {
openModal("popup_another");
});
// Обработчики событий для кнопок закрытия модальных окон
document.getElementById("close-popup-btn_ksen").addEventListener("click", function() {
closeModal("popup_ksen");
});
document.getElementById("close-popup-btn_another").addEventListener("click", function() {
closeModal("popup_another");
});
// Закрытие модального окна при клике вне его
document.querySelectorAll(".popup").forEach(function(popup) {
popup.querySelector(".popup__box").addEventListener("click", function(event) {
event._isClickWithInModal = true;
});
popup.addEventListener("click", function(event) {
if (!event._isClickWithInModal) {
closeModal(event.currentTarget.id);
}
});
});
Спасибо, очень интересно.
Большое спасибо. Я рад, что вам понравилось это видео :)
вы очень классный преподаватель, жаль, что вас раньше не было, над многими вещами не пришлось бы много времени сидеть)
Спасибо за ваши слова. Для меня они очень важны )
"Классно? Или не классно?! Мне классно, мне нравится)))" :D
Спасибо вам за урок)
Спасибо 😀 надеюсь и при просмотре других видео курса, вам будет классно 😎
Круто, классно делаешь!
Спасибо 🔥 надеюсь и другие видео канала, будут вам полезны))
Спасибо, понятно и информативно)
Спасибо за ваш комментарий :)
Спасибо большое за отличное видео, хорошую подачу материала и за практический пример))))) Очень круто!!!!!
Благодарен вам за ваш комментарий :) Спасибо за поддержку, это очень приятно. Хочется отвечать быстрее, но не всегда получается :(
@@alex_dudukalo даже не переживайте, у Вас много подписчиков и видео, конечно на это потребуется много времени на ответы в комментариях)))))) успехов Вам в развитии канала)))
@@user-hc7wq9om9i Спасибо вам за понимание и за успех. Успеха нам всем ))
Благодарю 🤝
Вы отличный преподаватель 👍
Очень очень приятно :)Спасибо вам
Интересно, спасибо!
И вам :)
Огромное спасибо!
Спасибо за обратную связь 🤗 ваша поддержка очень важна ☺
Классное, полезное видео. очень помогли
Спасибо за ваш комментарий🤗 надеюсь и другие видео канала будут вам полезны 😊
ПРОСТО И ОЧЕНЬ КЛАССНО!
Спасибо 🔥 надеюсь и другие видео канала будут вам полезны))
спасибо за урок!!!!
Очень полезно, берём на вооружение!
Думаю где то пригодится :)
👏👏👏 Спасибо!
И вам :)
11:35 опАсити )
Спасибо ))) Буду говорить правильно
Великолепно! 👍
Спасибо 🤗
Ну классно же!
Классно!
Вам не классно?
Мне классно)))
Обожаю)
Спасибо за ваш комментарий 🤗 рад, что курс вам полезен
Благодарю. 🥰
Спасибо за ваш комментарий 😇
я вижу ваш канал как коллекция реально практично полезной информации) которую я использую, так вот я очень был бы рад чтобы ваш канал и был такой коллекцией, где будет много всего полезного для реального использования 😎 потом очень надеюсь что и дальше будет много полезного для веб разработки,
p.s вот и идея для нового контента)🥰 сделайте из своего канала лучшую библиотеку знаний для разработчиков)
Спасибо большое за комментарий 🤗 надеюсь так и будет, приятно, что канал вам полезен 😊
Спасибо большое!!!❤
Спасибо вам за ваш отзыв
а так все понятно спасибо!!!
Большое спасибо. Я рад, что видео было понятным и надеюсь, помогло решить задачу с попап окном :)
Спасибо)
Спасибо вам )
просто лучший ,слов нет
Большое спасибо :)))
супер, спасибо)
полезный контент, спасибо
Спасибо 😊 надеюсь и другие видео курса будут вам полезны
Александр, конечно будут полезны и мне и многим другим. Большое спасибо вам за проделанную работу, главное помните все это имеет смысл.
Очень крутое видео. Спасибо за ваш труд. Подскажите, как добавить класс open по таймеру, а не клику?
Здравствуйте, спасибо за ваш комментарий :) Можно сделать так: setTimeout(function(){
document.getElementById("my-modal").classList.add("open")
},1000)
Спасибо, работает)
Спасибо за отзыв 😊
Спасибо 👍
И вам :)
@@alex_dudukalo Применил Ваш метод в своей работе)) Надеюсь Вы не будете против 😊
Круто!
Спасибо :)
Отлично👍
Спасибо ☺
Бро запиши роклик, что из JS надо знать начинающему верстальщику
Самое главное, что нужно знать - нет уже такой профессии.)
Опоздал лет на 20.
👏👍
Отличное видео. Подскажите пожалуйста нужно ли для модального окна делать отдельную подгрузку стилей через js, чтобы не прогружать стили для модального окна при открытии сайта? Или это нужно делать в зависимости от кол-ва функционала/стилей в модальном окне (если мало всего, то не нужно, если много, то нужно грузить стили через js на сайт)? Как определить момент, в который нужно или не нужно?
Хотелось бы от Вас видео по promise и promise.all JavaScript
Спасибо вас ) Очень хороший вопрос. Конечно идеально, если вы скрипт создания модального окна поместите в отдельный модуль и будете загружать его вместе с стилями. Это лучший способ, помогающий рационально использовать ресурсы. Главное загрузить все ресурсы именно до момента, когда вы созданный элемент помещаете в DOM дерево.
По промисам хочу записать ролик. Тема сложная. Хочу немного набраться опыта в записи роликов, что бы сделать максимально понятно :)
@@alex_dudukalo Хотелось бы видео на эту тему. Как лучше всего подгружать модули и стили в нужный момент)
это -даа. сам вчера с 17 попытки записал демо на 3 минуты: то тут пропустил, то тут лучше так, а тут непонятно иили не переведено. на 3 минуты ролик я убил весь день.@@alex_dudukalo
Для чайников. Научите пожалуйсто как правильно сделать форму регистрации на сайте в виде модального окна что бы после регистрации оно скрывалась, в ваших роликах всё очень понятно и классно
Спасибо за предложение. Думаю это хорошее предложение для одного из вебинаров на канале :) Давно думал о такой форме :)
Оставляю здесь комментарий, чтобы как можно больше человек, перед которыми стоит задача с модальным окном, могли это посмотреть. Спасибо ❤
а можно использовать модальное окно такого плана для отображения карточки товара? Например открылась карточка там что-то прописал отправил форму, запрос обработался на уровне бэкэнда но не обновляя основную страницу, закрыл окно и серфишь дальше сайт. Я просто питонист, мне еще надо много чего по бэкэнду прокачивать прежде чем перйду на js а такие функции хоть немного хочется использовать
Здравствуйте, да конечно :) Там можно сделать. Но тут я рекомендую смотреть в сторону динамического создания таких окон. У меня есть видео. Посмотрите, возможно оно вам поможет. Но там, конечно нужен JS :) ruclips.net/video/a6GAC4Ir9f8/видео.html
а если несколько модальных окон? как не писать на каждое id и отдельный код?
+ хорошо рассказываешь
Спасибо ☺
Всё понятно и оказывается просто сделать модалку. Будет желание, прошу, разбери пагинацию, когда данные приходят с сервера, с многоточием с права и слева. Спасибо!
Спасибо вам :) Да, ставлю в список и план) Буду показывать пагинацию ) Скоро
Привет! Круто → не то слово:) супер круто!!! Главное как шаблон идеально → лепи дальше сам как умеешь! Вопрос! А как быть если в ряд 4 одинаковые кнопки // 4 окна со своим текстом и все по четыре? регулировать при помощи id ?? и писать 4 комплекта js :( Что то я попробовал и запутался:( Спасибо за ответ! 👌
Спасибо. Самое быстрое и простое - создать копии элементов и кода с разным id . Но если есть опыт в программирование на JS, то есть другие пути решения)
Александр, спасибо за ваш труд. Видео понятные, темы очень нужные. Подскажите, пожалуйста, в чем может быть причина того, что модальное окно не открывается с мобильного телефона? Кнопка не срабатывает. В мобильной версии браузера ПК всё Ок, но с если открываю сайт с телефона - глухо.
Убрала ховер кнопок в мобильной версии, всё заработало.
Отлично. Рад, что у вас получилось решить проблему. В целом врятли я смог бы помощь без исходного. Ведь именно его нужно смотреть для поиска проблемы ))
ваш комментарий людям сэкономил кучу сил и времени. спасибо@@radokat
супер, как раз смогу в своей работе подправить модалку, а то она у меня совсем кривая
Рад, что видео полезно даже для уже готовой работы)
спасибо за урок,очень понравилось.Задаю классы дивам русскими буквами,айди по началу тоже начал русскими,естественно джава не читала кириллицу,минут 10 тупил потом дошло))
Спасибо вам, да классы лучше писать на латинице. Так же и id :)
@@alex_dudukalo не подскажите почему нужно классы на латинице называть?
@@user-du5ss6pe1u сайт должен запускаться везде во всем мире. Плюс изначально программы и верстка пишутся на латинице :)
@@alex_dudukalo Понял.Спасибо ещё раз за урок,все предельно понятно и ясно. До этого смотрел другой,там метод был в разы хуже,что-то скачивать,ещё у всех неработало,а тут простой код и все действует + узнал команды которые в дальнейшем смогу использовать в других задачах
круто
Спасибо! 😊
Александр, Ваше видео - просто находка для меня. И коротко, и понятно. и с мелкими, но важными подробностями... Очень, Вам, благодарна за Ваш труд. Но... у меня, почему-то. не открывается модальное окно при нажатии на кнопку, которая находится в отдельном меню авторизации. Она реагирует на нажатие. но модалка появляется на долю секунды и то в уменьшенном виде. а полностью не открывается. Может подскажете. что нужно подправить?
Здравствуйте, прошу прощения за долгий ответ. Да, я с удовольствием постараюсь вам помочь. Но для этого мне понадобятся исходники вашего кода. Вы можете отправить в дискорде: discord.gg/frontend , если это еще актуально. Не забудьте отметить меня в сообщении @dudukalo
Спасибо большое за ролик. Очень помогло в создание дипломки, только не могу понять как подвязать это окно к нескольким кнопкам?
Спасибо вам за ваш комментарий. Да, тут уже интереснее. Два варианта. Привязывать одно модальное окно к каждой кнопке. Это можно сделать циклом (если знакомы с программированием на JS) или по очереди к каждой кнопке. Или можно создать разные модальные окна и к каждому создавать уникальный код JS.
Видео просто огонь. А что нужно просписать к функциям чтобы например окно вылетало к каждой из 10 одинаковых кнопок, при текущем раскладе отрабатывает только первую?
Спасибо вам за отзыв :) Думаю можно сделать привязку клика не по ID, а по классу:// showBtn - класс для клика
document.querySelectorAll('.showBtn').forEach(element => {
element.addEventListener('click', function() {
// Показываем окно
})
})
@@alex_dudukalo спасибо!!!🥳
А почему при grid модальное окно не уходит за пределы html? а при flex уходит???
Подскажите пожалуйста, делал по видео, где-то упустил. При открытии страницы окно сразу открыто, как исправить
Здравствуйте, прошу прощения за долгий ответ. Хочется отвечать быстрее, но не всегда получается. Кажется уже не актуально, но все же отвечу& Думаю, вам следует убрать класс открытия модального окна из hmtl. Скорее всего он там есть :)
Александр, спасибо вам за урок! У меня получилось сделать классное модальное окно :)
Т.к. я пишу из "будущего", относительно даты выхода этого урока, мой отзыв может быть не совсем объективным, но всё же я напишу.
Из серьёзных минусов: вы не до конца объяснили JS код, по большому счёту просто предложив зрителям бездумно скопировать его у вас. Я про то, что появилось после фразы "Ну, я тут без вас дописал код". Мне пришлось идти гуглить, чтобы найти объяснения того, как закрыть модальное окно при клике по его подложке. У вас это не объясняется.
Минусы "по мелочи":
- На мой взгляд, очень важно произносить английские термины правильно. У вас много ошибок было, увы. Вы и сами произносите неправильно, и зрители потом будут за вами повторять.
- При просмотре урока у меня сложилось такое ощущение, будто бы у вас не было сценария (или он был очень обобщённым), и какие-то моменты вы просто на ходу придумывали и проговаривали. Я думаю, что будет лучше, если у вас будет чёткий сценарий, без лишней "импровизации". Но это моё личное мнение.
В целом, урок полезый и толковый, своё дело он делает - ДО урока я не умел делать модальные окна, ПОСЛЕ урока - умею. Спасибо вам большое!
P.S. Лайк поставил, подписался :)
Здравствуйте, Хоттаб. Прошу прощения за долгий ответ. Хочется отвечать быстрее, но не всегда получается. Тем более такой полезный комментарий. Спасибо за него.
Да, вы правы. Изначально мой план был показать только верстку модального окна, а JS код уже бонусом, но кажется это была не совсем удачной идеей. Так, как интерес он тоже вызывает.
По поводу терминов и иностранных слов так же соглашусь с вами. Я уже начал над этим работать и бью себе по рукам ))), когда говорю не правильно или забываю.
Я рад, что видео дало ожидаемый результат и очень надеюсь, что оно было интересным и смотрелось лего. А замечания правда хорошие, забираю их в работу. Еще раз спасибо.
@@alex_dudukalo Александр, здравствуйте!
Спасибо, что читаете комментарии :) Мне, как зрителю, очень приятно знать, что автору не всё равно на моё мнение.
Я делал практический (тренировочный, т.к. пока только учусь) проект, суть которого заключалась в создании простого веб-приложения, которое позволяет по поисковому запросу искать картинки (через API сервиса Unsplash), и изначально, найденные фотографии выводятся плиткой, но я хотел добавить так же возможность открыть full-size версию фотки по клику на неё. Вот тут то и пригодилось ваше видео, реализовал эту функцию как раз через модальное окно.
Так что ещё раз спасибо!
@@H0TTAB Да, безусловно мнение зрителей для меня важно и приятно. Тем более у вас очень развернутые и правильные сообщения. Мне приятно, что вы откликнулись. И все по делу. Да, вообще этот пример с модальным окном можно применять практически везде. Возможно вам будет интересно решение с использованием библиотеки fancyapps.com/fancybox/
В ней так же есть динамическая загрузка. Обязательно рассмотрите :)
ОТкрываешь видео, чтобы понять как пишется модалка через JS.
В это время Саша: Чтобы вас не нагружать, я код на JS написал сам)
😀🙈
С вами модальные окна в макете перестали пугать :)
так пишу от чувства благодарности) я пишу сейчас реальный сайт, и мне реально очень полезный ваш канал😊очень мне помогает, если я чего-то не знаю и думаю кого посмотреть то выбираю всегда вас, потому что подача инфи очень качественная)
Ещё раз спасибо за поддержку 🤗
а как сделать модольное окно что бы вызывалось с разных кнопак ?
а как сделать если у меня несколько кнопок и их количество не известно? у меня есть некие блоки в БД и их количество может изменятся, и в каждом таком блоке будет кнопка. Давать кнопке id не вариант же, потому что id должен быть уникальным. Я пробовал getElementsByClassName вместо поиска по id, но это не работает. Я не силен в JS, подскажите пожалуйста как решить
Здравствуйте, можно использовать поиск по классу. Находим все элемента с классами и добавляем им событие клика. Все кнопки, которые должны открыть это окошко должны иметь такой класс :) document.querySelectorAll(".класс_кнопки").forEach(button=>{
button.addEventListener("click", function(){
// Тут код, откарывающий модальное окно
})
})
@@alex_dudukalo Спасибо за видео и большое спасибо за комментарий
@@alex_dudukalo почему-то не работает
@@med_mikroskop а вас так код заработал?
хочу вас мотивировать и дальше делать такие видео как (отправка письма на почту, фиксированные меню, простое модальное окно, и так далее😁😁😁💪
Спасибо за отзыв, ваша поддержка очень важна 🔥
Делать через visuality неправильно, ведь если есть кнопка или что-то подобное то потом она будет из пустого места нажиматься. Нужно по праивльному делать
Здравствуйте, не уверен, что понял вас. Но если применять к блоку visibility: hidden, то кнопка внутри блока будет не кликабельной :)
23:47 я не очень понял что такое _isClickWithInModal, это переменная?
Да, переменная.Там где это написано, можно было бы написать (event.) - означает, что если происходит клик внутри модального окна, то модальное окно не закрывается, если сделать клик снаружи, то закроется
Ответили уже ниже :)
Спасибо за ответ :)
Как сделать попап чтобы открывался по времени например через 5 сек после открытия сайта и один раз в 24 часа. Спасибо
за такие незапрашиваемые попапы у пользователя только появляется желание поймать разработчика и бить его головой об стол. невероятно раздражает, каждый сайт считает за честь выкинуть окно с авторизацией через сети.
может быть у вас какой то Телеграм канал есть для удобства чтобы файлы скачать? а то в видео так и не сказали))
Здравствуйте. Да, спасибо за вопрос, в описании к видео есть ссылки, дублирую:
👁🗨 Телеграм канал: t.me/frontend_du2
👁🗨 Discord сервер: discord.gg/wyskBGxFcX
@@alex_dudukalo спасибо, да я просто смеюсь, в том плане что вы в видосе уже раза 3 повторяли)))
@@matveysusloparov2374 😀 да, кажется, что интеграции мало на бывает. Но и много тоже не стоит. Согласен. Кстати, в описании есть ссылка на телегам канал с исходникам кода 😀
поработайте над методом БЭМ
Спасибо, да. Кажется еще есть над чем работать. Особенно над планированием видео :) Спасибо вам.
visibility для создания pop-up думаю не самая лучшая идея
Opacity = опАсэти
Да, всегда забываю о правильном произношении :) Спасибо
Norm
Спасибо))
что за редактор кода?
VS code )
@@alex_dudukalo ага спасибо уже нашел-скачал) а то все в Notepad++ ковырял, а тут увидел аж загорелсо)
посмотрите по нему несколько обучающих видео, там реально очень много всяких плагинов для вёрсткии много чего еще, с кондачка не разберешься@@user-zm9wh8tb1w