На самом деле это удивительно легко сделать:
Создать элемент:
img = document.createElement('img');
Установить источник:
img.src = "myimage.png";
Позиционируйте его абсолютно и так:
img.style.position = "absolute";
img.style.left = "50px";
img.style.top = "50px";
img.style.width = "50px"; // Make these match the image...
img.style.height = "50px"; // ...or leave them off
(Очевидно, используйте любые координаты и размер, которые вы хотите.)
Возможно, вы захотите убедиться, что он отображается над другими вещами:
img.style.zIndex = 100; // Or whatever
Добавить в документ:
document.body.appendChild(img);
Переместить его
Используйте window.setInterval
(или setTimeout
в зависимости от того, как вы хотите это сделать), чтобы переместить его, изменив настройки style.left
и style.top
. Вы можете использовать Math.random
, чтобы получить случайное число с плавающей запятой в диапазоне от 0 до 1, умножить его и пропустить через Math.floor
, чтобы получить целое число для изменения ваших координат.
Пример
Это создает изображение в 50,50 и анимирует его (очень нервным случайным образом; я не тратил время, чтобы оно выглядело изящно) каждую пятую секунды в течение 10 секунд, а затем удаляет его:
function createWanderingDiv() {
var img, left, top, counter, interval;
img = document.createElement('img');
img.src = "myimage.png";
left = 200;
top = 200;
img.style.position = "absolute";
img.style.left = left + "px";
img.style.top = top + "px";
img.style.width = "200px"; // Make these match the image...
img.style.height = "200px"; // ...or leave them out.
img.style.zIndex = 100; // Or whatever
document.body.appendChild(img);
counter = 50;
interval = 200; // ms
window.setTimeout(wanderAround, interval);
function wanderAround() {
--counter;
if (counter < 0)
{
// Done; remove it
document.body.removeChild(img);
}
else
{
// Animate a bit more
left += Math.floor(Math.random() * 20) - 10;
if (left < 0)
{
left = 0;
}
top += Math.floor(Math.random() * 10) - 5;
if (top < 0)
{
top = 0;
}
img.style.left = left + "px";
img.style.top = top + "px";
// Re-trigger ourselves
window.setTimeout(wanderAround, interval);
}
}
}
(Я предпочитаю повторное планирование на каждой итерации с помощью setTimeout
[как указано выше], чем использование setInterval
, но это полностью ваш вызов. Если вы используете setInterval
, помните дескриптор интервала [возвращаемое значение из setInterval
и используйте window.clearTimeout
, чтобы отменить его, когда закончите.)
Выше приведен необработанный DOM / JavaScript; jQuery предлагает несколько помощников, чтобы сделать его немного проще, но, как вы можете видеть, это довольно просто, даже без.