Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Анимация меню (https://javascript.ru/forum/dom-window/48615-animaciya-menyu.html)

spiros 10.07.2014 10:55

Анимация меню
 
Вложений: 1
Здравствуйте, в JQuery человек новый, только начинаю изучать. Взял код скрипта с примера и немного адаптировал, но он выполняется своеобразно, есть ряд вопросов и буду признателен за помощ.

Почему Логоип появляется только после выполнения анимации?
после того как меню "выезжает" li должны выплыть снизу, почему этого не происходит?
и почему во премя процеса анимации выезда меню оно немного смещается вверх?
Заранее благодарен.
$(function() {
                var $br_background  = $('#br_background'),
                
                $br_loading     = $br_background.find('.br_loading'),
                
                $br_content     = $('#br_content'),
                $menu           = $br_content.find('.br_menu'),
                $mainNav        = $menu.find('ul:first'),
                $menuItems      = $mainNav.children('li'),
                totalItems      = $menuItems.length,
                $ItemImages     = new Array();
                
                $menuItems.each(function(i) {
                    $ItemImages.push($(this).children('a:first').attr('href'));
                });
                            
                var Menu            = (function(){
                    var init                = function() {
                        loadPage();
                        initWindowEvent();
                    },
                    loadPage            = function() {
            
                        $br_loading.show();//show loading status image
                        //hide the loading status image
                            $.when(slideOutMenu()).done(function(){
                                        $.when(toggleMenuItems('up')).done(function(){
                                        initEventsSubMenu();
                                    });
                                });
                            $br_loading.hide();
                    },
                
                    slideOutMenu        = function() {
                        /* calculate new width for the menu */
                        var new_w   = $('.page-wrapper').width();
                        var new_w1  = 0;
                        return $.Deferred(
                        function(dfd) {
                            //slides out the menu
                            $menu.stop()
                            .animate({
                                width   : new_w + 'px'
                            }, 700, dfd.resolve);
                        }
                    ).promise();
                    },
                        /* shows / hides the menu items */
                        toggleMenuItems     = function(dir) {
                        return $.Deferred(
                        function(dfd) {
                            /*
                            slides in / out the items. 
                            different animation time for each one.
                            */
                            $menuItems.each(function(i) {
                                        var $el_title   = $(this).children('a:first'),
                                            marginTop, opacity, easing;
                                        if(dir === 'up'){
                                            marginTop   = '0px';
                                            opacity     = 1;
                                            easing      = 'easeOutBack';
                                        }
                                        else if(dir === 'down'){
                                            marginTop   = '60px';
                                            opacity     = 0;
                                            easing      = 'easeInBack';
                        }
                                $el_title.stop()
                                .animate({
                                                    marginTop   : marginTop,
                                                    opacity     : opacity
                                                 }, 200 + i * 200 , easing, function(){
                                    if(i === totalItems - 1)
                                        dfd.resolve();
                                });
                            });
                        }
                    ).promise();
                    },
            
                    initWindowEvent     = function() {
                        
                    },
                        
                    loadImages          = function() {
                
                    };
                        
                    return {
                        init : init
                    };
                })();
            Menu.init();
            });

рони 10.07.2014 11:17

spiros,
Цитата:

Сообщение от spiros
Почему Логоип появляется только после выполнения анимации?
после того как меню "выезжает" li должны выплыть снизу, почему этого не происходит?
и почему во премя процеса анимации выезда меню оно немного смещается вверх?

а вот как увидеть всё что вы спросили?

spiros 10.07.2014 11:19

рони, внизу прикреплен архив со всем.

рони 10.07.2014 11:37

spiros,
увы неосилил ваш архив

spiros 10.07.2014 12:00

Очень нужна помошь!

hfts_rider 10.07.2014 15:20

Отвечаю на первый вопрос.
"Почему Логоип появляется только после выполнения анимации?"
- Потому что он делает запрос на сервер для отображения шрифта
<link  href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:regular,bold" rel="stylesheet" type="text/css" />
		<link href='http://fonts.googleapis.com/css?family=Dancing+Script' rel='stylesheet' type='text/css'>

hfts_rider 10.07.2014 15:25

Возможно из-за подгрузки шрифта оно немного едет вверх, потом загружает шрифт и выравнивает, можно попробовать поставить высоту для хедера, тогда не должно ничего скакать.

Насчет списка не понял ничего. Я вижу просто список, а что с ним должно произойти и при каких действиях я так и не понял.
Ты этот код откуда скачивал? Есть ссылка на работающий пример?

spiros 10.07.2014 15:44

вот. http://tympanus.net/Tutorials/AnimatedContentMenu/

spiros 10.07.2014 15:48

с первым, действительно в шрифте проблема, спасибо.

hfts_rider 10.07.2014 16:21

Нужно полностью слить страницу?
Или только Меню, без изменения фона и без всплывающих окон при клике?


Часовой пояс GMT +3, время: 14:46.