powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скорость движения посредством setInterval в разных браузерах
7 сообщений из 7, страница 1 из 1
Скорость движения посредством setInterval в разных браузерах
    #35617025
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут, наконец, свой сайт делаю - немного руки дошли. Понятно, хочется немного повыеживаться. Причем, решил простую анимацию делать не на флеше, а средствами javascript - выезжания, сдвиги. К примеру, выезжание панельки делаю следующим образом (не хочу использовать relative, поэтому прячу в контейнере-родителе с overflow: hidden путем установки margin-top в отрицательное значение и последующим его увеличением):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function showElement(slide_element, speed, next_step) {
		sliding = clearInterval(sliding);
		sliding = setInterval(function() {
			if (slide_element.offsetTop <  0 ) slide_element.style.marginTop = (slide_element.offsetTop +  1 ) + "px";
			else {
				if (next_step != null) next_step();
				else sliding = clearInterval(sliding);
			}
		}, speed);
}
Если, к примеру, панелька состоит из footer'а и body, то вызываю функцию следующим образом:
Код: plaintext
1.
2.
3.
4.
showElement(document.getElementById("option_footer"),  20 , function() {
	showElement(document.getElementById("option_body"),  5 , function() {
		document.getElementById("option_header_close_place").style.display = "block"; sliding = clearInterval(sliding);
	})
});
Как видно, интервалы - 5 и 20 млсек. Подбирал в ИЕ7 - движется очень мягко и приятно для глаз - примерно секунды за полторы-две при высоте в 150 пикселей. Однако в ФФ этот процесс происходит практически мгновенно - еле-еле можно уловить, что движение все же есть, но происходит слишком быстро.
Подскажите, как можно уровнять скорости "выезжания" в разных браузерах?
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35617261
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подобрать подходящие значения? ))
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35617284
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Ну хоть бы примерчик где выложил.
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35617295
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5 - слишком мало, вот тебе и поведение браузеров, о котором все говорят - ФФ пропускает события, если не может их обработать, ИЕ выстраивает в очередь и пуляет как может.
Никогда не ставлю меньше 100.
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35617933
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я ж примерчик и выложил ... запуск и саму функцию.
На 100 млсек у ИЕ можно заснуть, а ФФ открыл почти так же быстро, но за 2 дерганья. Видимо, надо менять саму функцию вывода. Посмотрю как плавность реализована в jQuery.
На 500 и 100 млсек соответственно ФФ опять открылось слишком быстро - за пару рывков, а ИЕ открывал 36 секунд (!). Судя по поведению, ФФ работает с setInterval совершенно по другому принципу (никогда его не использовал, поэтому практики его поведения в разных браузерах нет).
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35618790
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я недавно упомянул как это действует. В ИЕ setInterval() запускает процесс через энное время, и если на момент предполагаемого вызова выполняется другой скрипт - то счетчик как бы приостанавливается. Поэтому может быть плавность но переходящая в задержки.
У ФФ ситуация такая. Счетчик пишет вызовы в очередь и затем вызывает функции подряд без перерыва как только интерпретатор освобождается от выполнения скрипта.
Одинаковое пгведение можно получить вызывая setTimeout(function(){setTimeout()}) или проверяя абсолютное время. Для этого как мне кажется следует разработать что-то вроде общего таймера. из которого вызывать функции для разных компонентов чтобы и самих вызовов было меньше, и можно достигнуть могласованность в движении разных компонентов. Так поступает судя по всему scriptaculous.
...
Рейтинг: 0 / 0
Скорость движения посредством setInterval в разных браузерах
    #35619016
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, уже вроде и сам начал до этого допирать, думал перейти на setTimeout() ...
Но в конце-концов решил все-таки склонить голову и воспользоваться библиотекой jQuery - надо же когда-нибудь начинать :). Свой код урезал сразу на десятки строк. Так что пока доволен.
Всем спасибо за советы (особенно apapacy).
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скорость движения посредством setInterval в разных браузерах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]