Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание фотогалереи, анимированный выбор картинок, сделал на 95 %, 5% не могу доделать 
:(
    Опции темы
numerovan
Дата 29.11.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Здравствуйте, решил сделать фотогаллерею, почти сделал ... но до конца нет , из головы больше выжать не могу, хочу спросить у Вас совета ГДЕ ОШИБКИ И ЧТО НЕ ТАК ?  работает на 95 % , но малёк глючит . Пример тут http://sowie.de/volodya/
Тестировал только на IE
В коментариях посторался пояснить доступно.
Код

<script language="javascript">
    //необходимые переменные константы
    var w = 0;
    var alpha_3 = 100;
    var j=0;
    var ww=5;
    var jj=1;
    // функция которая работает на он клик на картинке
    function zamena(x){
        //alert("divId = " + x.parentNode.id + "; imgId = " + x.id + "; z-index (div) = " + x.parentNode.style.zIndex); // алерт для проверки айди, зет индекста и айди картинки
        function work(){
            key_2 = false;
            if(jj > 10){
                // последний этап : выключием анимацию , ставим всё в исходное положение.
                clearInterval(setj);
                key_2 = true;
                jj=1;
                // передвигаем на нужные места
                for(i=4, w=0;    i>=0   ; i--, w += 50){
                    document.getElementById('divId_' + i).style.opacity = 1 - (w * 0.004);
                    document.getElementById('divId_' + i).style.filter = 'progid:DXImageTransform.Microsoft.Alpha( opacity = ' + (100 - (w * 0.4)) + ')';
                    document.getElementById('img_'   + i).style.width  = 550 - w;
                    document.getElementById('img_'   + i).style.height = Math.round(412 - (w*0.75));
                    document.getElementById('divId_' + i).style.left = Math.round(175 + (w/2));
                    document.getElementById('divId_' + i).style.top  = Math.round(100 - (w/5));    
                }
                // первую картинку от нашей стороны подгоняем под последнию (с нашей стороны), придаём стиля и делаем её видимой, на которую кликнули она стала последней
                x.parentNode.style.opacity = 0.1;
                x.parentNode.style.filter = 'progid:DXImageTransform.Microsoft.Alpha( opacity = 10)';
                x.style.width  = 300;
                x.style.height = 225;
                x.parentNode.style.left = 300;
                x.parentNode.style.top  = 50;
                x.parentNode.style.display = 'block';
                x.style.display = 'block';
                
                // вот тут вот и застрял ... даже не знаю что уже сделать тут ... много что пробывал, оставил так.
                // тут происходит замена айди и зет индекса со сдвигом на 1, для того чтоб вернуться в исходное положение 5-ая стала 0-ой, 4-ая стала 5-ой и т.д.
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[0].id = 'divId_1';
                document.getElementsByTagName('body')[0].getElementsByTagName('img')[0].id = 'img_1';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[0].style.zIndex='1';
                
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[1].id = 'divId_2';
                document.getElementsByTagName('body')[0].getElementsByTagName('img')[1].id = 'img_2';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[1].style.zIndex='2';
                
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[2].id = 'divId_3';
                document.getElementsByTagName('body')[0].getElementsByTagName('img')[2].id = 'img_3';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[2].style.zIndex='3';
                
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[3].id = 'divId_4';
                document.getElementsByTagName('body')[0].getElementsByTagName('img')[3].id = 'img_4';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[3].style.zIndex='4';
                
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[4].id = 'divId_5';
                document.getElementsByTagName('body')[0].getElementsByTagName('img')[4].id = 'img_5';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[4].style.zIndex='5';
                
                //if(document.getElementsByTagName('body')[0].getElementsByTagName('div')[4].id == "divId_5") alert("ok");
                //else alert("no");
                
                document.getElementById('divId_5').id = 'divId_0';
                document.getElementById('img_5').id = 'img_0';
                document.getElementsByTagName('body')[0].getElementsByTagName('div')[5].style.zIndex='0';
                
                // конец
            }
            if(!key_2){
                // цикл для смещения всех картинок вниз (позиционирование)
                for(i=0, m=5; i <= 5; i++, m--){
                    var obj = document.getElementById('divId_' + m);
                    
                    a = (Number(obj.style.opacity) + 0.02).toFixed(2);
                    obj.style.opacity = a;
                    obj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha( opacity = ' + (a * 100) + ')';
                    
                    document.getElementById('img_' + m).style.width =  obj.getElementsByTagName('img')[0].width  + ww;
                    document.getElementById('img_' + m).style.height = Math.round(obj.getElementsByTagName('img')[0].height + (ww*0.75));
                    obj.style.left = Math.round(Number(obj.style.left.replace("px", "")) - (ww/2).toFixed(1) - 0.05);
                    obj.style.top  = Math.round(Number(obj.style.top.replace("px", ""))  + (ww/5));
                }
                jj++; 
            }    
        }
        // функция для плавного исчезновения выбранной картинки
        function fadeOut(){
            key = false;
            if(alpha_3 < 20){
                clearInterval(seti);
                
                x.style.display = 'none';
                x.parentNode.style.display = 'none';
                
                alpha_3 = 100;
                key = true;
                // тут запускается смещение всех картинок в необходимую позицию , т.е. 4 стала 5, 3 стала 4 и т.д.
                setj = setInterval(work, 10);
            }
            
            if(!key){
                var antiAlpha_3 = 100 - alpha_3;
                x.parentNode.style.filter = 'progid:DXImageTransform.Microsoft.Alpha( opacity = ' + alpha_3 + ')';
                x.parentNode.style.opacity = (alpha_3/100);
                x.style.width = 550 + antiAlpha_3;
                x.style.height = (550 + antiAlpha_3)*0.75 ;
                x.parentNode.style.top = 100 + antiAlpha_3;
                x.parentNode.style.left = 175 - antiAlpha_3/2;
                alpha_3 -= 20;
            } 
        }
        seti = setInterval(fadeOut, 50);
    }
    // фукция нужна для создания необходимых компонентов , т.е. дива и внутри изображения
    function createElem(t){
        var w = t * 50;
        
        (t==0) ? alpha = (t*10)+10 : alpha = t*2*10;
        var alpha_2 = alpha/100;
        
        var parent = document.getElementsByTagName('BODY')[0];
        var newP = document.createElement('div');
        
        //if(t == 0) new_id = 0; else new_id = (t/10); 
        
        newP.id = 'divId_' + t;
        newP.style.border = '1px solid black';
        /*newP.style.width = (400+w) + 'px';
        newP.style.height = (300+t) + 'px';*/
        newP.style.padding = '3px';
        newP.style.background = '#c5c5c5';
        newP.style.position = 'absolute';
        newP.style.top = (50+(t*10)) + 'px';
        newP.style.left = (300-w/2) + 'px';
        newP.style.filter = 'progid:DXImageTransform.Microsoft.Alpha( opacity = ' + alpha + ' )';
        //newP.style.-moz-opacity = alpha_2;
        //newP.style.-khtml-opacity = alpha_2;
        newP.style.opacity = alpha_2;
        newP.style.zIndex = t;
        parent.appendChild(newP);
        //alert(alpha_2);
        if(t == 5)
            document.getElementById('divId_' + t).innerHTML = '<img id="img_' + t + '" align="absmiddle" onclick="zamena(this)" src="12.jpeg" width=' + (300+w) + ' height=' + ( Math.round((300+w)*0.75) ) + ' />';
        else
            document.getElementById('divId_' + t).innerHTML = '<img id="img_' + t + '" align="absmiddle" onclick="zamena(this)" src="1.jpg" width=' + (300+w) + ' height=' + ( Math.round((300+w)*0.75) ) + ' />';
        j+= 10;
    }
    
    window.onload = function(){
        for(i=0; i<6; i++){
            createElem(i);
        }    
    };
</script>


Это сообщение отредактировал(а) numerovan - 29.11.2009, 10:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.