Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: lightbox баг повторного отображения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
adrea_007
Отправлено: 04 Сентября, 2012 - 12:50:52
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. /** ============= lightbox ============= **/
  2. var hide_lightbox = false;
  3.  
  4.  
  5. $('.lightbox_show').mouseout(function() {
  6.   hide_lightbox = true;
  7. });
  8. $('.lightbox_show').mouseover(function() {
  9.   hide_lightbox = false;
  10. });
  11.  
  12.  
  13. $('body').click(function () {
  14.   if(hide_lightbox) {
  15.     $('#lightbox_overlay').remove();
  16.     $('body').css('overflow-y', 'auto');
  17.     hide_lightbox = false;
  18.   }
  19.  
  20. });
  21.  
  22.  
  23. // позиционирование контейнера
  24. function positionLightbox() {
  25.   var top  = ($(window).height() - $('.lightbox_show').height()) / 2;
  26.   var left = ($(window).width()  - $('.lightbox_show').width()) / 2
  27.  
  28.   $('#lightbox_container').css({
  29.     'top' : top,
  30.     'left': left
  31.   });
  32. }
  33.  
  34. // показываем затенение, скрываем полосу прокрутки
  35. function lightbox() {
  36.   // скрыть полосы прокрутки
  37.   $('body').css('overflow-y', 'hidden');
  38.  
  39.   // показываем лайтбокс
  40.   $('<div id="lightbox_overlay" class="group"></div>')
  41.     .css('top', $(document).scrollTop())
  42.     .appendTo('body');
  43.  
  44.   // вставляем в лайтбокс контейнер
  45.   $('<div id="lightbox_container" class="group"></div>')
  46.     .appendTo('#lightbox_overlay');
  47.  
  48. }
  49.  
  50.  
  51. // ============= окошечко вход vk и акаунт сайта ============= //
  52. $('a.login').click(function(event) {
  53.   event.preventDefault();
  54.  
  55.   // запускаем лайтбокс
  56.   lightbox();
  57.  
  58.   // помещаем и показываем форму входа в контейнере
  59.   $('.lightbox_login').appendTo('#lightbox_container');
  60.  
  61.   // центрируем контейнер
  62.   positionLightbox();
  63.  
  64. });


написал простенький lightbox
все работает
lightbox закрывается при клике на любую область экрана следующим кодом:
CODE (javascript):
скопировать код в буфер обмена
  1. $('body').click(function () {
  2.   if(hide_lightbox) {
  3.     $('#lightbox_overlay').remove();
  4.     $('body').css('overflow-y', 'auto');
  5.     hide_lightbox = false;
  6.   }


но суть не в этом
при повторном запуске lightbox'а, затенение показывается, а в него не вставляется контейнер, т.е. со следующих строк код не работает
CODE (javascript):
скопировать код в буфер обмена
  1.   // вставляем в лайтбокс контейнер
  2.   $('<div id="lightbox_container" class="group"></div>')
  3.     .appendTo('#lightbox_overlay');
 
 Top
adrea_007
Отправлено: 05 Сентября, 2012 - 10:47:46
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Решил проблему, если кого-то заинтересует мой lightbox расскажу об изменениях.

Проблема была в том, что метод appendTo перемещаем нужный для вставки в лайтбок объект из body вообще

А закрывал я lightbox методом remove(), что удаляем и lightbox и перемещенный объект, т.е. нужного мне элемента больше нет в DOM'е

Мы просто создаем переменную и помещаем туда объект с которым работаем и перед закрытием лайтбокса возвращаем его обратно в DOM

Добавлено всего три строчки в код и вуаля Хорошо

CODE (javascript):
скопировать код в буфер обмена
  1. /** ============= lightbox ============= **/
  2. var element_lightbox; // хранит в себе текущий рабочий елемент, для обратного возврата в body
  3. var hide_lightbox = false;
  4.  
  5.  
  6. $('.lightbox_show').mouseout(function() {
  7.   hide_lightbox = true;
  8. });
  9. $('.lightbox_show').mouseover(function() {
  10.   hide_lightbox = false;
  11. });
  12.  
  13.  
  14. $('body').click(function () {
  15.   if(hide_lightbox) {
  16.     // перед закрытием лайтбокса помещаем рабочий элемент обратно в body
  17.     element_lightbox.appendTo('body');
  18.     $('#lightbox_overlay').remove();
  19.     $('body').css('overflow-y', 'auto');
  20.     hide_lightbox = false;
  21.   }
  22.  
  23. });
  24.  
  25.  
  26. // позиционирование контейнера
  27. function positionLightbox() {
  28.   var top  = ($(window).height() - $('.lightbox_show').height()) / 2;
  29.   var left = ($(window).width()  - $('.lightbox_show').width()) / 2;
  30.  
  31.   $('#lightbox_container').css({
  32.     'top' : top,
  33.     'left': left
  34.   });
  35. }
  36.  
  37. // показываем затенение, скрываем полосу прокрутки
  38. function lightbox() {
  39.   // скрыть полосы прокрутки
  40.   $('body').css('overflow-y', 'hidden');
  41.  
  42.   // показываем лайтбокс
  43.   $('<div id="lightbox_overlay" class="group"></div>')
  44.     .css('top', $(document).scrollTop())
  45.     .appendTo('body');
  46.  
  47.   // вставляем в лайтбокс контейнер
  48.   $('<div id="lightbox_container" class="group"></div>')
  49.     .appendTo('#lightbox_overlay');
  50.  
  51. }
  52.  
  53.  
  54. // ============= окошечко для входа на сайт ============= //
  55. $('a.login').click(function(event) {
  56.   event.preventDefault();
  57.  
  58.   // сохраняем елемент для предотвращения потери после удаления лайтбокса
  59.   element_lightbox = $('.lightbox_login');
  60.  
  61.   // запускаем лайтбокс
  62.   lightbox();
  63.  
  64.   // помещаем и показываем форму входа в контейнере
  65.   $('.lightbox_login').appendTo('#lightbox_container');
  66.  
  67.   // центрируем контейнер
  68.   positionLightbox();  

(Отредактировано автором: 05 Сентября, 2012 - 10:48:40)

 
 Top
miak
Отправлено: 16 Декабря, 2016 - 14:59:55
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Добрый день.
у меня проблема с лайбоксом, не могу разобраться с этим, помогите пожалуйста...

Надо поставить запрет на прокрутку страницы при закрытии лайтбокса.
т.е. при закрытии лайтбокса страница прокручивается к началу страницы.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB