sash

ответов0 / помог0

Пытаюсь написать свой собственный slideUp

1679690961
Здравствуйте всем. jQuery - это, конечно, круто, но решил попробовать кое-что сделать самостоятельно. Значит, что мы хочим: пока просто без клика чтобы блок плавненько так схлопнулся, т.е. высота = 0

function O(i) { return typeof i == 'object' ? i : document.getElementById(i) }
function S(i) { return O(i).style                                            }
window.onload=function(){
var heightt = S('div').height;
var height = parseInt(heightt);
console.log(height);
    for(var  i = 0; i < height ; i++){      
        setTimeout((function (obj) {
  return (function (){
        obj.height = (height-i)+'px';
  });
})(S('div')), 3000);    
 
    /*  
        setTimeout(function(){
        S('div').height = (height-i)+'px';
        }, 33); 
    */  
    }
}
Суть в том, что блок схлопывается моментально через три секунды. Почему так?
vovandr
ответов2 / помог1
1679691334
Если честно, когда открыл ваш код, то не сразу понял, что вы вообще хотели) Переделывать не стал, чуток изменил, чтобы хотя бы работало (по-хорошему рефакторить все надо, начиная с имен функций и переменных):

function O(i) { return typeof i == 'object' ? i : document.getElementById(i) }
function S(i) { return O(i).style;}
function collapse(duration, height){
   for(var  i = 1; i <= height ; i++){      
       (function(i){
          setTimeout(function(){
                    S('div').height = (height-i)+'px';  
          }, i*duration/height);   
       })(i); 
    } 
} 
window.onload=function(){
var heightt = S('div').height;
var height = parseInt(heightt);    
collapse(3000, height);
}
sashвлепить жирный лайк
Fedor Vlasenko
ответов1 / помог1
1679691527
круто конечно, я не верстальщик но добавив css анимации и input в руки будет круто http://jsfiddle.net/vlasenkofedor/qPC6a/
sashвлепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль