Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать плавное изменение размеров контейнеров при смене AJAX-содержимого (https://javascript.ru/forum/misc/7339-kak-sdelat-plavnoe-izmenenie-razmerov-kontejjnerov-pri-smene-ajax-soderzhimogo.html)

Nominus umbra 27.01.2010 11:09

Как сделать плавное изменение размеров контейнеров при смене AJAX-содержимого
 
Собственно, суть в сабже.
Синглтон, реализующий анимацию произвольного CSS-набора, у меня есть, но тут вопрос принципиальный, а от чего к чему - анимировать размеры?
Есть некоторый контейнер, который содержит контент.
По действию AJAX-запрос меняет содержимое контейнера.
Т.е. innerHTML контейнера заполняется из responseText реквеста.
Всё понятно и всё работает, но не нравится, что "скачут" размеры контейнеров.
Хочется плавного изменения... контейнер может быть как блоком, так и инлайном.
Какие есть идеи?

Nominus umbra 27.01.2010 11:16

Я пока склоняюсь к промежуточному помещению содержимого в контейнер, вынесенный за пределы видимости смещением.
Тогда я смогу получить параметры W+H таргета, параметры контейнера внедрения (с прежним контентом) мне известны, получается, буду знать, от чего к чему анимировать...
Т.е. так:
1. Получаю responseText, помещаю в контейнер, вынесенный за пределы видимости.
2. Получаю его размеры, зависящие от контента.
3. Получаю размеры контейнера приёмника.
4. Анимирую размеры контейнера до требуемых (а внутрях там крутилка работает.)
5. Переношу контент из временного в уже анимированный.

Может, что ещё можно? Или проще как-то...

Riim 27.01.2010 13:08

До пятого пункта все верно.

Цитата:

Сообщение от Nominus umbra
Переношу контент из временного в уже анимированный

Заменять не текст в контейнере, а сам контейнер.

Nominus umbra 27.01.2010 13:32

можно и контейнер...
это не принципиально
мне сейчас только не совсем ясно, как с инлайн работать...
да и с блочными там тоже тонкостей много
поскольку контейнер назначения является частью DOM-структуры со своей моделью описания, для корректного промежуточного "невидимого" рендеринга вынесенный контейнер должен быть в том же узле DOM, что и таргет.
Чтобы CSS корректно наложился.
А как его тогда "вынести за пределы", чтобы без помех отрисовать?
Абсолютно позиционировать и left-ом вынести в минус 1000em? Сохранив его ширину? Получается, что плавное растягивание я пока понимаю как отобразить - если растягивание идёт только по одной из осей - если по обоим сразу - ни-па-нят-но... но пока и не нужно... в 90% растягиваться будет по вертикали... в 9.999% - строго по горизонтали, а в обоих случаях... хм...


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