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 :: Верстка модального окна

 PHP.SU

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


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

> Описание: JQuery + CSS
Panoptik
Отправлено: 13 Ноября, 2011 - 12:43:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Доброго времени суток, уважаемые форумчане!

Собственно была задача сделать модальное окно, в которое подгружается контент через AJAX. С этим проблем у меня не было.
Сделал/сверстал всё как надо и всё хорошо работает в firefox (у меня щас 8 версия) и Опере(10), но когда я посмотрел результат в Хроме и Осле, то был немного опечален...
Осел-7 ваще скрипт не воспроизводит, но это еще пол беды а в 8 Осле и Хроме есть некий баг, кой я с вашей помощью надеюсь устранить

собственно код JQuery:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.    $('.simple_preview').children('p').children('a').click(function(){
  3.         var id = $(this).parent('p').attr('class');
  4.         $.post('/includes/jprocessing.php',{'get_modal_id':id},function(data){
  5.            var content = '<div onclick="close_modal_form();" id="modal_back"></div>'+
  6.                           '<div id="modal_form">'+
  7.                             '<div id="modal_form_header"><span onclick="close_modal_form();">ЗАКРЫТЬ</span></div>'+
  8.                             '<div></div>'+
  9.                          '</div>';
  10.            //добавляем модальную форму к документу
  11.            $('body').append(content);
  12.            //загружаем данные в форму
  13.            $('#modal_form').children('#modal_form_header').next('div').append(data);
  14.            //считываем получившуююся ширину формы
  15.            var modal_width = $('#modal_form').css('width');
  16.            modal_width = parseInt(modal_width);
  17.            //считываем получившуююся высоту формы
  18.            var modal_height = $('#modal_form').css('height');
  19.            modal_height = parseInt(modal_height);
  20.            //считываем получившуююся ширину окна
  21.            var body_width = $('body').css('width');
  22.            body_width = parseInt(body_width);
  23.            //считываем получившуююся высоту окна
  24.            var body_height = $('body').css('height');
  25.            body_height = parseInt(body_height);
  26.            //рассчитываем левое и верхнее положение формы относительно окна
  27.            var left = Math.ceil((body_width-modal_width)/2);
  28.            var left_center = Math.ceil(body_width/2);
  29.            var top = Math.ceil((body_height-modal_height)/2);
  30.            var top_center = Math.ceil(body_height/2);
  31.            //отображаем форму
  32.            $('#modal_form').css({
  33.                 'minWidth':0,'minHeight':0,
  34.                 'left':left_center,
  35.                 'top':top_center,
  36.                 'width':'0',
  37.                 'height':'0',
  38.                 'display':'block'})
  39.             .animate({
  40.                 'width': modal_width+'px',
  41.                 'height': modal_height+'px',
  42.                 'left': left+'px',
  43.                 'top':(top-15)+'px',
  44.            },400);
  45.            
  46.         });
  47.    });
  48.  
  49.  


CSS:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <style>
  3. #modal_back {
  4.     width: 100%;
  5.     height: 100%;
  6.     background: black;
  7.     opacity: 0.5;
  8.     position: fixed;
  9.     z-index: 100;
  10.     display: block;
  11.     left: 0;
  12.     top: 0;
  13.     cursor: pointer;
  14. }
  15.  
  16. #modal_form {
  17.     position: fixed;
  18.     display: none;
  19.     min-width: 500px;
  20.     min-height: 200px;
  21.     max-width: 80%;
  22.     max-height: 80%;
  23.     background: url("../../images/index_box_1_bg.png") repeat scroll 0 0 transparent;
  24.     z-index: 101;
  25.     padding: 30px 10px 10px;
  26.         border-radius:7px;
  27.         -moz-border-radius:7px;
  28.         -o-border-radius:7px;
  29.         -webkit-border-radius:7px;
  30. }
  31.  
  32. #modal_form_header + div {
  33.     overflow: auto;
  34.     height: 100%;
  35.     width: 100%;
  36.         border-radius:7px;
  37.         -moz-border-radius:7px;
  38.         -o-border-radius:7px;
  39.         -webkit-border-radius:7px;
  40. }
  41.  
  42. #modal_form_header {
  43.     height: 20px;
  44.     padding: 0 10px;
  45.     text-align: right;
  46.     position: fixed;
  47.     top: inherit;
  48.     left: inherit;
  49.     width: inherit;
  50.     z-index: 102;
  51.     border: inherit;
  52.     border-width: 0 5px;
  53. }
  54.  
  55. #modal_form_header span {
  56.     color: red;
  57.     font-size: 13px;
  58.     font-weight: bold;
  59.     line-height: 30px;
  60.     vertical-align: middle;
  61.     margin-right: 10px;
  62.     cursor: pointer;
  63. }
  64.  
  65. </style>
  66.  


беда в ХРОМе и Осле в том что DIV[#modal_form_header] остается по центре формы ну и с ним кнопка "ЗАКРЫТЬ" а если я в Хромовском "фаербаге" обновляю этот блок, то он становится на свое должное место. Вобщем вопрос в том, как после всех действий в скрипте обновить блоки так чтобы они стали на свое место?


-----
Just do it
 
 Top
join
Отправлено: 14 Ноября, 2011 - 05:38:58
Post Id



Гость


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


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




у меня ,ваш код, вообще не хочет работать


-----
- "Holy shit!" -девиз Холливуда
- "Hello world " -девиз PhP
 
 Top
LEONeso
Отправлено: 14 Ноября, 2011 - 20:24:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




В начале надо сделать рабочую вёрстку...

делается отдельный шадоу бокс... shadown
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. .shadown {
  3.         position:absolute;
  4.         height:100%;
  5.         width:100%;
  6.         opacity:0.5;
  7.         background:#000;
  8.         }
  9.  
  10. .box {
  11.         position:fixed;/*или absolute*/
  12.         height:200px;
  13.         width:450px;
  14.         color:#000;
  15.         top:50%;
  16.         left:50%;
  17.         margin:-100px 0 0 -225px;/*вычитаем 50% из суммы высоты и ширины, как вариант, для горизонтального выравнивание используется margin:0 auto;*/
  18.         border:2px solid silver;
  19.         background:#fff;
  20.         }
  21.         .box .close {
  22.                 position:absolute;
  23.                 top:0px;
  24.                 right:0px;
  25.                 margin:5px;
  26.                 min-height:20px;
  27.                 min-width:20px;
  28.                 border:2px solid red;
  29.                 color:#fff;
  30.                 background:#000;
  31.                 }
  32.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="shadow"></div>
  3. <div class="box"><div class="close">x</div></div>
  4.  


Что касается jQuery.
Карта функций в помощь (она под логотипом)
Банальные манипуляции с отображением блока... или же его удалением.

(Отредактировано автором: 14 Ноября, 2011 - 20:24:42)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Panoptik
Отправлено: 15 Ноября, 2011 - 22:41:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Спасибо за ответы

Тут небольшие заметки

Ваш блок
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. .shadown {
  3.         position:absolute;
  4.         height:100%;
  5.         width:100%;
  6.         opacity:0.5;
  7.         background:#000;
  8. }
и мой
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. #modal_back {
  3.    width: 100%;
  4.     height: 100%;
  5.     background: black;
  6.     opacity: 0.5;
  7.     position: fixed;
  8.     z-index: 100;
  9.     display: block;
  10.     left: 0;
  11.     top: 0;
  12.     cursor: pointer;
  13. }
в принципе сходятся, то же касается и остальных. Вопрос как раз в последних блоках у меня в коде: это некая шапочка в окне, как в Виндовсе строка заголовка вверху с кнопочками закрыть и прочими. собственно проблема была в этом блоке
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. #modal_form_header {
  3.    height: 20px;
  4.     padding: 0 10px;
  5.     text-align: right;
  6.     position: fixed;
  7.     top: inherit;
  8.     left: inherit;
  9.     width: inherit;
  10.     z-index: 102;
  11.     border: inherit;
  12.     border-width: 0 5px;
  13. }
  14.  
  15.  


после добавления, он не хотел ставать на свое место вверху то есть занимать значение "top" & "left" решилось добавлением в JQuery еще одной анимации в колбэке. После всего всё нормально начало отображаться в хроме и ИЭ


-----
Just do it
 
 Top
tuareg
Отправлено: 16 Ноября, 2011 - 00:46:47
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Здравствуйте.
Селекторы jQuery посмотрите. Все гораздо проще пишется
Посмотрите ==>delegate()/on()
вместо ==>$('body').css('height');
$('body').height();==> вернет сразу число
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTML, Дизайн & CSS »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB