Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jPopUp, centering (https://javascript.ru/forum/jquery/5157-jpopup-centering.html)

Koc 21.09.2009 21:09

jPopUp, centering
 
День добрый, наконец-то я решил, что стоит посещать этот форум (как помощь понадбилась).

Пишу 2 плагина.

1) отцентровка элементов.
таких плагинов много, мой - один =)

настройки, которые планируются:
how : 'vh', // v/h/vh
relativeTo : 'screen', // parent/screen/document
center : 'now', // now/scroll/resize/sr
calculateOnly : false // true/false
и по русски с объяснением
* как центрировать: только горизонтально, только вертикально, и так и так
* относительно чего центрировать: родительского элемента, видимой области экрана, всего документа
* центрировать: сейчас, оставлять элемент отцентрированным при прокрутке, при ресайзе, и так и так
* только посчитать и вернуть значения, сам элемент не трогать


не все еще работает. Я не знаю как сделать разные настройки при горизонтальном и вертикальной отцентровке. Наверно это и не получится даже. Ну например горизонтально отцентрировать относительно экрана, а вертикально - отн-но родителя. Тут же нужны разные position.

пример ака демка http://tinyurl.com/nfnfns


2) модальные окна/попапы
лень писать. Просто окна модальные, с кучей настроек. Будет время - отпишу подробнее.
Пока делаю ядро, потом буду базовыми эффектами заниматься, далее над блокировкой отдельных элементов по селектору, потом над блокировкой всего кроме отдельных элементов и так далее.

пример ака демка http://tinyurl.com/lgvn9r

в чем я нуждаюсь по поводу попапа:
в деньгах^W, сиськах^W

Проверял в Safari 3, FF 3.5.3
IE не работает совсем. Нужна помощь. Так же прошу помощи по проектированию. Сейчас при объявлении new jPopUp заново все локальные методы объявляются. Поэтому сразу же открывать popUp нельзя. Как быть?

Gvozd 21.09.2009 22:53

1)ИМХО:
я бы сделал настройки в виде хеш-массива
его три элемента- v,h,vh соответсвенно
в каждом из них массив остальных настроек
любой из них может быть null, либо содержать в себе null-ы
при этом соответсвующая натсройка берется из общего(vh), либо по дефолту(не центровать)
таким образом можно комбинировать центровку как угодно:
$("elem").center({vh:{relativeTo:'screen',center:'now'}});
$("elem").center({v:{relativeTo:'screen',center:'now'},
                         h:{relativeTo:'parent',center:'scroll'}});
$("elem").center({v:{relativeTo:'screen',center:'now',},
                         h:{relativeTo:'parent'},
                         v:{relativeTo:'screen',center:'now'}});

Koc 21.09.2009 23:04

Gvozd,
хм, очень клевое предложение. Еще можно так сделать: если не задан h, v, vh а сразу настройки - применять их к vh.

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


зы: добавил helper к попапу - fsLoading.show(); fsLoading.hide(); - показ гифки с очень большим zIndex и position: fixed. Кто-то может объяснить, почему он не работает без setTimeout?

Riim 21.09.2009 23:06

То, что сразу заметно:

1. в первом скрипте не учитывается resize окна браузера.
2. во втором скрипте, в 4 и 5 примерах, некоторые глюки в Chrome.

Koc 21.09.2009 23:10

1) ресайз учитывается если кникнуть на "центрируйся два!" (а что, если учитывать горизонтальную прокрутку и вертикальную по отдельности?)

2) хрома нет, буду ставить, смотреть.

Riim 21.09.2009 23:22

Koc,
возможно, стоит отслеживать window.onresize , а еще лучше, что бы это можно было в настройках включать.

Koc 21.09.2009 23:35

Riim,
ну там же настройки есть: учитывать ресайз, скролл, скролл и ресайз.
посмотри исходник странички с примером

Riim 22.09.2009 00:38

Есть, так есть, я просто в код не заглядывал.


Часовой пояс GMT +3, время: 12:02.