Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > тормозит анимация в IE6


Автор: pgood 6.4.2007, 14:11
Сделал плавно выезжающие кнопки
пример тут: http://forumedia.ru/mc_pack/ - см. слева от текста
Но почему-то в IE6 в отличии от Mozilla и Opera выезжают очень медленно, не в соответствии с заданным интервалом. Подскажите пожалуйста, в чем может быть причина тормозов.

Вот 2 функции: для выезжания и заезжания кнопочек (Оригинальный скрипт к примеру лежит тут http://forumedia.ru/mc_pack/js/default.js)

Код

function slideOut(id_item){
    if(this.id) id_item=this.id;
    var self = document.getElementById(id_item);
    if(self.timer_in_id!=undefined){//останавливаем таймер заезжания
        window.clearInterval(self.timer_in_id);
        self.timer_in_id=undefined;
    }
    
    var item_width = parseInt(self.style.width)+5;
    if(item_width>108){//если ширина максимальная
        if(self.timer_out_id){//останавливаем таймер
            window.clearInterval(self.timer_out_id);
            self.timer_out_id=undefined;
        }
        self.style.width='108px';
        return;
    }
    self.style.width=item_width+'px'; //увеличиваем ширину
    if(self.timer_out_id!=undefined) return; //если таймер уже установлен то выходим
    self.style.backgroundImage = 'url(images/'+id_item+'_s.gif)'; //устанавливаем новый фон    
    self.timer_out_id=window.setInterval('slideOut("'+id_item+'")',5); //запускаем таймер
}
function slideIn(id_item){
    if(this.id) id_item=this.id;
    var self = document.getElementById(id_item);
    if(self.timer_out_id!=undefined){//останавливаем таймер выезжания
        window.clearInterval(self.timer_out_id);
        self.timer_out_id=undefined;
    }
    
    var item_width = parseInt(self.style.width)-5;
    if(item_width<50){//если ширина максимальная
        if(self.timer_in_id){//останавливаем таймер
            window.clearInterval(self.timer_in_id);
            self.timer_in_id=undefined;
        }
        self.style.width='50px';
        return;
    }
    self.style.width=item_width+'px'; //увеличиваем ширину
    if(self.timer_in_id!=undefined) return; //если таймер уже установлен то выходим
    self.style.backgroundImage = 'url(images/'+id_item+'.gif)'; //устанавливаем новый фон
    self.timer_in_id=window.setInterval('slideIn("'+id_item+'")',5); //запускаем таймер
}

var left_panel_items = document.getElementById('div_panel_left').getElementsByTagName('div');
for(var i=0; i<left_panel_items.length; i++){
    left_panel_items[i].onmouseover = slideOut;
    left_panel_items[i].onmouseout = slideIn;
}

Автор: 12345c 6.4.2007, 15:01
У меня в IE и FF почти одинаково по скорости. И процент загрузки процессора одинаков. Может быть, при тесте на IE было что-то ещё включено? Зато в IE баг дизайна - вся колонка примерно 130 пикс спрятана за левый край.

Автор: pgood 6.4.2007, 15:09
Странно... Нет у меня больше ничего не включено и пробовал я на разных компах...
Тогда у кого тоже тормозит отпишитесь пожалуйста.

Автор: pgood 24.4.2007, 16:45
Причину торможения нашел - это бэкграунд, т.к. на фоне кнопочек установлено пару графических бэкграундов, IE6 начинает работать мееееедленно (по крайней мере на тех компах на которых я тестировал). Например выезжание одной кнопочки грузит AMD Athlon 1,6 GHz на 100% smile, а Pentium4 3 GHz на 50-60%. После того как убираешь бэкграунды - все начинает работать быстро

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)