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 :: переместить(поменять координаты) объекта с помощью JQuery
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
Есть 10 картинок, каждая вложенная в дивы. Координата каждого дива имеет приращение в 15пик. Возможно ли с помощью JQuery пробежать по этим дивам(пусть они тоже будут вложены в некоторый контейнер Див), и изменить их координаты (топ, лефт) на 15пик?
Может есть что-типа функции someFunction(РодительПотомковКоторыхНадоПеребрать,moveX,moveY)? moveX,moveY - приращение координат к каждому потомку. Ну и какой-нибудь так эффект замедленного изменения положения)))
Потерял линк на сайт с такой фигней по JQuery((
----- У всего есть обратная сторона.
IllusionMH
Отправлено: 07 Марта, 2012 - 01:49:51
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
zypikov, если я правильно понял - это можно сделать примерно так
_http://jsfiddle.net/IllusionMH/nAdJr/1/embedded/result,js/
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
Да, вы правильно поняли IllusionMH. Но мне еще нужно смещать координаты, начиная с определенного потомка, например второго. Я почитал по вашей ссылке документацию (видое курс не смотрел, интернет не тянет(( ), и насколько понял нельзя передать в функцию номер потомка с которого нужно начинать смещать. Если можно, то как?
Воообще, моя задача состоит в том, что: допустим удалил 3 потомка, а 4 и 5(последний "подъехали" к нему..
Видимо, придется самим js получать потомка, а потом через jQuery смещать каждый, начиная с удаленного((
----- У всего есть обратная сторона.
DeepVarvar
Отправлено: 07 Марта, 2012 - 23:49:42
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
zypikov пишет:
удалил 3 потомка, а 4 и 5(последний "подъехали" к нему..
Идите от обратного - при удалении 3-его надо анимированно сжать его ширину до нуля пикс.
А уж после анимации, реально сделать ему remove();
Для юзера же это будет выглядеть так как вы описали.
Кроме того что-то мне кажется что стандартного "каруселькиного" подхода с родителем overflow: hidden; тоже может хватить за глаза.
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
DeepVarvar пишет:
Идите от обратного - при удалении 3-его надо анимированно сжать его ширину до нуля пикс.
Я думал по-другому Может даже и лучший вариант. DeepVarvar, перебор потомков у меня идет чистым js. Получил я потомка, как теперь его передать в jquery, чтобы ужать?
DeepVarvar пишет:
Кроме того что-то мне кажется что стандартного "каруселькиного" подхода с родителем overflow: hidden; тоже может хватить за глаза.
Никогда не слышал. Ссылку на примерчик, пожалуйста) и лучше с кодом)))
----- У всего есть обратная сторона.
IllusionMH
Отправлено: 08 Марта, 2012 - 11:33:58
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
zypikov, в jQuery метод .each() можно передавать индекс элемента в массиве на котором он сейчас.
_http://jsfiddle.net/IllusionMH/nAdJr/5/embedded/result,js/
Вот переделанный вариант, там где есть флаг, который устанавливается если находимся на текущем (удаляемом) элементе, и все следующие будут сдвигаться в сторону.
Сам же элемент имеет, как упоминал выше DeepVarvar, анимацию уменьшения ширины и по завершению анимации - удаляется.
Функцию нужно будет оптимизировать (как минимум повесить события не на каждый элемент, а на родителя, и сравнивать с объектом инициатором события, а не с передаваемым в функции текущим)
В некоторых случаях оптимальней будет вариант когда всем дочерним объектам задается float: left;, и анимируются только ширина (возможно отступ(ы)) удаляемого элемента, а остальные "подъедут" сами.
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
IllusionMH пишет:
в jQuery метод .each() можно передавать индекс элемента в массиве на котором он сейчас.
А я посмотрел, что в children() ниче передать незя, а про each() и не подумал((.
IllusionMH пишет:
Функцию нужно будет оптимизировать (как минимум повесить события не на каждый элемент, а на родителя, и сравнивать с объектом инициатором события, а не с передаваемым в функции текущим)
. Ну это когда я синтаксис jQuery подучу))
Но это еще часть работы. Как сделать полностью прозрачной часть изображения? Допустим есть фото 100 на 200 пикселей, мне нужно сделать полностью непрозрачной часть этого фото размеро 50 на 100 пикс. Может ли это jQuery? Либо какая-нибудь другая библиотека? Я посмотрел примеры Рафаэль, но подобного ничего не видел. Пока что вижу единственный выход - резать пхп скриптом функцией imagecopyresampled() на части, потом их складывать. Затем js у нужного убирать непрозрачность.
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
zypikov, как вариант, использовать блоки фиксированного размера, а изображения ставить им фоном и сдвигать его.
Либо div с overflow: hidden; и фиксированными размерами. Внутри располагаются изображения, которые сдвинуты влево и вверх (отрицательные left/top или соответствующие margin).
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
IllusionMH пишет:
Либо div с overflow: hidden; и фиксированными размерами. Внутри располагаются изображения, которые сдвинуты влево и вверх (отрицательные left/top или соответствующие margin).
Жаль только, что со свойством overflow есть косяки в разных браузерах(((
И все равно эти сокрытия получаются за счет извращений всяких(( IllusionMH + 1 в карму, DeepVarvar спасибо за помощь)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.