Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передвижение дива (https://javascript.ru/forum/misc/2528-peredvizhenie-diva.html)

777 10.01.2009 19:38

Передвижение дива
 
<script language="JavaScript">
function moveTxt() { if (ani1.style.pixelTop < 500) { ani1.style.pixelTop += 2; setTimeout("moveTxt()", 50); } }
</script></head>

<body onLoad="moveTxt()">

<div id="ani1" style="position:absolute;left:10;top:10">Text ... on the go!</div>


Подскажите как добиться кроссбраузерности..

Octane 10.01.2009 19:52

document.getElementById('ani1').style…

И пересчет позиции надо так организовать, чтобы можно было еще единицы измерения приписать
pixelTop += position + 'px'

Андрей Параничев 10.01.2009 20:08

Octane,
// Значение из CSS:
var pixelTop = "20px";

// Описанная тобой операция:
pixelTop += 20 + "px";

// Результат:
alert(pixelTop); // 20px20px

777 10.01.2009 20:27

<body onload="move()">

<script language="JavaScript">
var pos = 'px';
function move() { if (document.getElementById('m1').style.left < 500 pos) { document.getElementById('m1').style.left += 2 pos; setTimeout("move()", 50); } }
</script>

<div id="m1" style="position: absolute; left:10; top:10"> !!! </div>



Подскажите правильно мыслю ? С ява к сожалению только начинаю знакомство...

Octane 10.01.2009 23:40

Андрей Параничев, да += забыл убрать. Я просто ввел новую переменную, показав, что увеличивать значение мало, нужно еще дописывать единицы измерения.

777:
И кстати, что такое pixelTop? Как-то не обратил сразу на это внимания. У объекта style нет свойства pixelTop.

Цитата:

Сообщение от 777 (Сообщение 10533)
var pos = 'px';
….style.left < 500 pos …
….style.left += 2 pos …

Что это?

Вам свойству left нужно присваивать строку, содержащую число и единицы измерения.

…style.left = число + 'px'

Ilya 11.01.2009 00:44

Octane,
У объекта style есть свойство pixelTop.

777,
Я поменял задержку на 25 миллисекунд. Для лучшей плавности перехода, поэкспериментируйте с этим показателем.


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
var vr2; // Необходимая глобальная переменная, чтобы вовремя остановить задержку
function moveTxt() { 
	var vr1 = document.getElementById("ani1"); // Ссылка на объект
	var x = parseInt(vr1.style.top); // Переменная, которая будет менять расстояние от  родительского элемента (сверху по оси х)
	x++; // Приращение
 	vr1.style.top = x + "px";  // Новая координата
	if(vr1.style.top == 500 + "px") { //Если расстояние от родительского элемента равно 500 пикселей (сверху по оси х), то задержка останавливается
		clearInterval(vr2);
	}
}
function setI() {
	vr2 = setInterval("moveTxt()", 25); // Задержка
}
</script>
</head>
<body onLoad="setI()">
<div id="ani1" style="position:absolute;left:10px;top:10px">Text ... on the go!</div>
</body>
</html>


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