15.07.2011, 14:16
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
Написание метода подобного .animate()
1. Как бы это не звучало смешно, но я решил написать себе подобие мини фрэймворка на js
Когда начал писать метод, подобный .animate() в jQuery, то столкнулся с некоторыми трудностями.. А именно с "конструкцией запроса" (не смог найти подходящего слова).
В jQuery это выглядит так:
$('ид').animate({height: 'show', width: 'show'}, 200);
У меня obj.animate(id,speed,px);
Сразу видно, насколько мой метод коряв и не динамичен. В нём сразу изменяется и ширина и высота элемента, лишая пользователя выбора..
Подскажите пожалуйста, как сделать конструкцию, примерно такую же как в jQuery?
Например, obj('ид').animate({аргумент: 'значение'},speed,px);
|
|
15.07.2011, 14:22
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Зачем вам метод animate. Сделать любую конкретную анимацию очень просто, сделать универсальную функцию анимации очень сложно.
|
|
15.07.2011, 14:37
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
Сообщение от Kolyaj
|
Зачем вам метод animate. Сделать любую конкретную анимацию очень просто, сделать универсальную функцию анимации очень сложно.
|
Ну как бы попрактиковаться в подобном, да и самому интересно как и что там)
Да и к тому же мне не нужна универсальная, мне нужно чтоб она выполняла изменение высоты и ширины)
Основная проблема состоит в том, как передать {аргумент: 'значение', аргумент2: 'значение2' и т.д.}
|
|
15.07.2011, 17:10
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от (Sandr)
|
Основная проблема состоит в том, как передать {аргумент: 'значение', аргумент2: 'значение2' и т.д.}
|
это самое простое что может быть в этой функции, один из вариантов:
({
bar : function(obj) {
for(i in obj) {
alert(i + ' : ' + obj[i]);
}
}
}).bar({
color : 'red',
height: '14px'
});
Последний раз редактировалось monolithed, 15.07.2011 в 17:13.
|
|
15.07.2011, 17:43
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
Сообщение от monolithed
|
это самое простое что может быть в этой функции, один из вариантов:
({
bar : function(obj) {
for(i in obj) {
alert(i + ' : ' + obj[i]);
}
}
}).bar({
color : 'red',
height: '14px'
});
|
Ооо.. спасибо, но можно другой вариант, чуточку по проще?)) А то в этом я понял только
function(obj) {
for(i in obj) {
alert(i + ' : ' + obj[i]);
}
}
Или можешь дать ссылку, где рассказывается про подобные конструкции?
|
|
15.07.2011, 17:56
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от (Sandr)
|
Или можешь дать ссылку, где рассказывается про подобные конструкции?
|
все в голове.
Сообщение от (Sandr)
|
но можно другой вариант, чуточку по проще?
|
куда проще?
function Foo(obj) {
for(i in obj) {
alert(i + ' : ' + obj[i]);
}
}
Foo({
color : 'red',
height: '14px'
});
|
|
15.07.2011, 18:10
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
monolithed,
О! Спасибо, это то, что нужно))
|
|
15.07.2011, 18:33
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
monolithed,
Написал, теперь "запрос" выглядит так:
$.animate({width: 'close', height: 'close'}, id,speed,px);
Как думаешь, если судить по внешнему виду, то терпимо смотрится?))
|
|
15.07.2011, 18:48
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от (Sandr)
|
$.animate({width: 'close', height: 'close'}, id,speed,px);
|
тогда уж так:
$('#id').animate({width: 'value', height: 'value'}, speed);
также можно сделать второй вариант инициализации (как в jQuery)
а вообще, если есть сомнения, посмотрите как эта функция реализована библиотеках
|
|
15.07.2011, 19:07
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
monolithed,
"а вообще, если есть сомнения, посмотрите как эта функция реализована библиотеках", дело в том, что когда пытаюсь разобраться в чужом коде, то это редко у меня получается(
По этому и пишу свои велосипеды)
|
|
|
|