Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
21 / 17 / 0
Регистрация: 05.03.2010
Сообщений: 59
1

Слайдинг

29.04.2010, 18:58. Показов 903. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я недавно начал активно изучать JavaSrcipt. Пока не пользуюсь
различными фреймворками а стараюсь для опыта писать свои функции. Сейчас не могу
разобраться по какому принципу делают анимацию элементов. Допустим есть файл
sliding.js, содержащий функции которые позволяют элементу плавно разворачиваться.
В HTML коде есть конпка при нажатии на которую элемент должен плавно развернутья
сверху вниз.

HTML5
1
<input type = "button" value = "Slide" onclick = "slide('menu', 960)"/>
В файле sliding.js есть функция slide:

Javascript
1
2
3
4
5
6
7
function slide(id, height) {
    var element = document.getElementById(id);
    
    while(element.offsetHeight < height) {
        setTimeout(element.style.height = element.offsetHeight + 10, 500);
    }
}
Но при нажатии на кнопку, функция выполняеться только один раз, открывается
только 10px элемента и все. Немогли бы вы мне обьяснить почему. Так же если можно
дать ссылки на информацию и примеры по этой теме. Мне не хочется выносить setTimeout()
или setInterval() в HTML а все сделать в .js файле а выносить только одну функцию
принимающую необходимые параметры. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2010, 18:58
Ответы с готовыми решениями:

слайдинг экрана
Здравствуйте, кодеры. есть вопрос. есть приложения c несколькими окнами создана на основе...

Слайдинг экранов с частичной видимостью следующего
Как можно реализовать сдвиг Activity как это показано на рисунке: ...


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

Или воспользуйтесь поиском по форуму:
2
60 / 60 / 6
Регистрация: 12.11.2009
Сообщений: 169
29.04.2010, 22:42 2
Выполняется один раз потому что setTimeout выполняет код только раз. Хотя в опере он выполняется полностью и без задержек(из за цикла).

Можно сделать таким способом

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function slide(id, height) {
    var element = document.getElementById(id);
 
    intervalId = setInterval(function(){
    if(element.offsetHeight < height)
        element.style.height = element.offsetHeight + 10+'px'; //Firefox воспринимает стиль height/width только с пикселями
    else
        clearInterval(intervalId); //Очистить интервал
    },
    500);
 
}
Вот ссылки на интересующий материал
setTimeout
setInterval
1
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
30.04.2010, 15:16 3
Или например так.
Javascript
1
2
3
4
5
6
7
8
9
function slide(id, height) {
    var element = document.getElementById(id);
        
    if(element.offsetHeight < height)     {
         element.style.height = element.offsetHeight + 10;
         setTimeout(function(){slide(id,height);}, 500);
}
    
}
1
30.04.2010, 15:16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru