sash

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

Получение высоты и ширины элемента

1679576994
Здравствуйте, пишу свою библиотечку пока безымянную Столкнулся с проблемой при определении высоты и ширины элементов, всегда выдаёт auto для нчных элементов

 function _init_(el){
       this.s = document.querySelector(el);
   }
   
 // главная и самая сложная функшн
 function _A_(el){
     return new _init_(el)      
 }
 
_init_.prototype.css = function(){
    var obj = arguments[0];
    if(typeof obj === 'object'){
     for (i in obj){
     this.s.style[i] = obj[i];   
     }   
     return this;
    }
    else return this.s.style.obj || getComputedStyle(this.s).obj;
}
 
console.log(_A_('#first').css('width'));
Как узнать действительную высоту и ширину, подскажите пожалуйста
xBoy
ответов3 / помог3
1679577355
sash, Использовать offsetWidth и offsetHeight Пример https://jsbin.com/ratiyiqajo/edit?html,js,console,output
sashвлепить жирный лайк
sash
ответов0 / помог0
1679578368
возвращает undefined
влепить жирный лайк
xBoy
ответов3 / помог3
1679578449sashвлепить жирный лайк
sash
ответов0 / помог0
1679578684
Да, это я неправильно делал

console.log(_A_('#first').css('offsetWidth'));
Благодарю А не подскажете вот сдесь ещё как правильно сделать?

_init_.prototype.slideUp = function (duration){
   
   this.css({'overflow' : 'hidden'});
   var height = parseInt(this.css('height'));
   for(var  i = 1; i <= height ; i++){      
       (function(i){
          setTimeout(function(){
                    this.css({'height' : (height-i)+'px'});  // this.css is not a function, хотя overflow устанавливает 
          }, i*duration/height);   
       })(i); 
    } 
    return this;
}
Имитация jQuery slideUp должна в итоге получиться
влепить жирный лайк
xBoy
ответов3 / помог3
1679578771
sash, Судя по вашему коду, то так должно сработать

var height = this.s.offsetHeight;
sashвлепить жирный лайк
sash
ответов0 / помог0
1679578867
нет, не работает. Я переделал цсс функцию ( использую queryselectorAll для выбора элементов)

_init_.prototype.css = function(obj){
    if(typeof obj === 'object'){
     for (var e = 0; e < this.s.length; e++){
         for (i in obj){
         this.s[e].style[i] = obj[i];   
     }   
     }
     return this;
    }
    else {
        if(obj === 'width') return this.s[0].offsetWidth;
        if(obj === 'height') return this.s[0].offsetHeight
        else return this.s[0].style[obj] || getComputedStyle(this.s[0])[obj];
    }    
} 
 
_init_.prototype.attr = function(){
    
}
влепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль