2014-10-21 2 views
1

Я учусь угловато, и у меня есть вопрос об анимации между шаблонами ng-view.Обратный вызов анимации углового ng-view

Когда я щелкаю по ссылке шаблон, текущий шаблон и новый (щелкнул один) сохраняет анимацию одновременно, что делает содержание после ng-view прыжка вниз для старых и новых шаблонов высоты.

Это мой index.html:

<ul> 
    <li><a href="#/">View 1</a></li> 
    <li><a href="#/view2">View 2</a></li> 
</ul> 

<div> 
    <div ng-view></div> 
</div> 

page.html (шаблон)

<div class="page"> 
    <div class="center"><!-- this div centers the content horizontally, 
          it has a fixed value (with margin:0 auto) which 
          will change with media querys --> 

     <h1>view</h1> 

    </div> 
</div> 

И CSS:

.ng-enter, .ng-leave { 
    -webkit-transition: all 1s ease; 
    -moz-transition: all 1s ease; 
    -o-transition: all 1s ease; 
    transition: all 1s ease; 
} 

.ng-enter { 
    opacity: 0; 
} 

.ng-enter-active{ 
    opacity: 1; 
} 

.ng-leave { 
    opacity: 1; 
} 

.ng-leave-active { 
    opacity: 0; 
} 

.page>div.center{ 
    width: 500px; /* fixed width, this value will change in media queryes*/ 
    margin: 0 auto; 
} 

New plunker

На старте Вид 1. Как это сделать, когда я нажимаю на Просмотреть 2, чтобы сначала исчезнуть Просмотреть 1, а затем затухать в Просмотреть 2?

Теперь, когда я нажимаю View 2 это начать FadeIn одновременно с View 1 гаснуть, что делает содержание после ng-view скачка для обоих шаблонов высоты, которые я не хочу.

Как предложил @Dabbiemiller, используя display:inline-block костюмы, но тогда это разбивает мое горизонтальное центрирование - plunker

+0

просто, вы можете просто поставить свойство задержки в переходе: http://plnkr.co/edit/EcI5kBxo4pXCsh3th8Jh?p=info – DebbieMiller

+0

@Dabbiemiller контент после 'ng-view' все еще прыгает в ваш плункер. – Vucko

+0

@ Vucko попробуйте дать ng-view div фиксированный размер. или, может быть, положить его в контейнер с фиксированным размером –

ответ

1

заменить

.ng-enter, .ng-leave { 
    -webkit-transition: all 1s ease; 
    -moz-transition: all 1s ease; 
    -o-transition: all 1s ease; 
    transition: all 1s ease; 
} 

.ng-enter { 
    opacity: 0; 
} 

со следующим кодом

.ng-enter { 
    -webkit-transition: all 1s ease; 
    -moz-transition: all 1s ease; 
    -o-transition: all 1s ease; 
    transition: all 1s ease; 
    opacity: 0; 
} 

вам не нужно, чтобы сделать анимацию на оба события (вход/выход), вы можете сделать только на въезд и он не будет делать одновременная анимация сразу скроет первый вид, а затем оживит второй.

http://plnkr.co/edit/iVSRrg9nBaDTtHUZcDDu

, если вам нужна одна за другой анимации вам нужен обратный вызов.Для того, чтобы избежать повторения вы можете найти ответ здесь:

AngularJS css animation + done callback

+0

+1 это сработает. Однако можете ли вы привести пример с JavaScript и обратными вызовами? – Vucko

3

Отнесите: http://plnkr.co/edit/EcI5kBxo4pXCsh3th8Jh?p=preview

<div ng-view style="display:inline-block;"></div> 

и, как сказал в комментариях, добавить задержку ваших переходов:

.ng-enter{ 
    -webkit-transition: all 2s ease 1s; 
    -moz-transition: all 2s ease 1s; 
    -o-transition: all 2s ease 1s; 
    transition: all 2s ease 1s; 
} 

.ng-leave { 
    -webkit-transition: all 1s ease; 
    -moz-transition: all 1s ease; 
    -o-transition: all 1s ease; 
    transition: all 1s ease; 
} 

Edit: После комментария от Vucko, говоря, что мое решение не работает им, из-за внутреннего div, который имеет фиксированную ширину, я предложил новое решение here, с position:absolute;.

+0

Ваш плункер работает, но я имеют немного другую ситуацию. В моем шаблоне у меня есть внутренний div, который имеет некоторую фиксированную ширину (так, чтобы она была сосредоточена внутри страницы). [См. Новый плункер] (http://plnkr.co/edit/bxiIQDMpgqRRgEWrr4Nf?p=preview). Обратите внимание, что я удалил ваш 'display: inline-block' из' ng-view' - он не работал, как в вашем plunker. – Vucko

+0

Затем используйте положение: абсолютное, как здесь: http: //plnkr.co/edit/1IKXLq4fvgrwLNIhYDHn – DebbieMiller

+0

Это ломается, если есть больше контента [плункер] (http://plnkr.co/edit/8UL7a3ORmv3LD4JXcPj3?p=info) – Vucko

Смежные вопросы