0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 8

Движение img внутри div

12.08.2013, 20:45. Показов 9095. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема:
Есть допустим это.
HTML5
1
2
3
4
5
6
7
8
9
<html>
<title></title>
<head></head>
<body>
 <div id="cntrl" width="100%" height="50%">
  <img id="pic" scr="something.png">
 </div>
</body>
</html>
Как, посредством javascript, заставить картинку двигаться в случайном направлении внутри дива, отталкиваясь от его стенок?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2013, 20:45
Ответы с готовыми решениями:

Преобразовать IMG (без id и class) в DIV
&lt;div class=&quot;product&quot;&gt; &lt;!--IMG1--&gt; &lt;a href=&quot;http://site.net/_pu/0/02900145.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в...

Класс div внутри div
Здравствуйте. Нужна помощь. Есть div, внутри него N-ное число div'ов, нужно пробежаться по всем дивам внутри основного и определить класс...

Простое движение div'a
Доброе время суток всем!) В общем, как мне казалось сначала, простая задача как организовать простое перемещение div'a. Вот код. но он...

8
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
12.08.2013, 23:01
Zakhsukh, запускаете таймер, который через некоторый интервал времени запускает какую то функцию...
в этой функции находите координаты картинки внутри div-а, потом генерируете новые случайные координаты, в которые отправляете картинку.

Для отскакивания можно фантазировать самому... Например если при очередном вызове функции картинка находится у границы блока, определите, по какой прямой картинка летела до этого вызова и сгенерируйте координаты, зеркально отраженные от границы блока... и так далее... можно наворачивать сколько угодно))
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
13.08.2013, 07:26
Цитата Сообщение от z-z Посмотреть сообщение
потом генерируете новые случайные координаты
Может просто дергать на одном месте, наверно.

Можно попробовать использовать скрипты, со снегом, дождем, листиками, сердечками и прочей ерундой, в этих скриптах задумано хаотичное движение в одну сторону.
Отскок как z-z, подсказал.

тут есть архив со снегом
0
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
13.08.2013, 09:20
Цитата Сообщение от newJS Посмотреть сообщение
Может просто дергать на одном месте, наверно.
ну все зависит от фантазии, как человек задумает, так и будет))
можно ограничивать "угол обзора", делать его каждый раз разным, хотя опять же есть вероятность повторения этого угла обзора, но она маленькая))
можно брать несколько предыдущих шагов, анализировать их и в соответствии с этим выбирать область, в которой будут новые координаты...
тут вариантов много же главное, чтобы фантазии хватило... ))
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
13.08.2013, 12:40
Картинку можно двигать не только на JS, можно сделать флешь анимацию и записать в один динамический файл с форматом gif, каждый раз при выборе решения нужно смотреть что проще сделать...
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
13.08.2013, 23:46
HTML5
1
2
3
<center>
<div style="background:gold;width:150;height:100" id=mydiv><img id=myimg src="1.gif" style="position:absolute"></div>
   <!-- 1.gif - Ваше изображение-->
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script type="text/javascript">
ab2=0;ab3=0;x=1;y=1;
pw=16; // Ширина изображения в пикселях (указать)
ph=16; // Высота изображения в пикселях (указать)
 
function dvizhenie(){
var elem1 = document.getElementById("mydiv");
ww1 = elem1.offsetWidth;
hh1 = elem1.offsetHeight;
ll1 = 0;
tt1 = 0;
while (elem1){ll1 += elem1.offsetLeft;
   tt1 += elem1.offsetTop;
   elem1 = elem1.offsetParent;
}
 
ab2+=x;ab3+=y;
if(ab3>=hh1-ph){y=-1};
if(ab2>=ww1-pw){x=-2};
if(ab3<=0){y=2};
if(ab2<=0){x=1};
document.getElementById("myimg").style.top=tt1+ab3;
document.getElementById("myimg").style.left=ll1+ab2;
}
 
setInterval("dvizhenie()",50);
</script>
Ещё можно это делать на канвасе.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.08.2013, 06:42
строки ##22-26 надо бы переписать:
document.getElementById ("myimg").style.top = (tt1 + ab3 + document.body.scrollTop) + 'px';
document.getElementById ("myimg").style.left = (ll1 + ab2 + document.body.scrollLeft) + 'px';
}

setInterval (dvizhenie, 50);
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
15.08.2013, 11:31
И что получилось? Во время скроллирования DIV смещается, уходит за пределы, а картинка продолжает бегать на том же месте, что и раньше?
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
24.08.2013, 01:43
Вот более простой вариант решения:
HTML5
1
<div style="position:absolute;background:gold;width:150;height:100"><img id=myimg src="1.gif" style="position:absolute"></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
<script>
x=0;y=0;x1=1;y1=1;
function dvizhenie(){
document.getElementById("myimg").style.left=x;
document.getElementById("myimg").style.top=y;
if(x>150-document.getElementById("myimg").width|x<0){x1=-x1};  // 150 - ширина дива
if(y>100-document.getElementById("myimg").height|y<0){y1=-y1}; // 100 - высота дива
x+=x1;y+=y1;
}
setInterval(dvizhenie,50);
</script>
И не приходится вручую указывать размеры изображения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.08.2013, 01:43
Помогаю со студенческими работами здесь

Движение блоков div
У меня такой вопрос: есть у меня три блока div,в каждом из которых изображение. стояла задача двигать блок на 200px вниз и возвращать...

Скроллинг внутри div-а
Всем привет. Пытаюсь сделать скроллинг внутри дива для android. Долго уже не могу решить следующую проблему. При попытке двигать див,...

Как на JS изменить все теги <img></img> на странице?
Приветствую. Требуется поменять все &lt;img&gt; &lt;/img&gt; на странице html, а именно сделать замену. Заменить тег src на тег test. Т.е....

Как защитить от взлома через [img] [/img] BBcode
Добрый день! На сайте реализованы некоторые возможности BBcode в комментировании... Я так понимаю что взломать такой сайт с помощью...

Изменить стиль внутри созданного div
На странице из одного класса берется информация, потом создается новый div куда эта информация вставляется. Как доступиться к стилям...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru