У меня есть раскрывающийся список, который я хочу, чтобы уменьшающая анимация отображалась, когда раскрывающееся меню открывается и закрывается. У меня есть CODEPEN here с кодом для вашего эксперимента.ng-show не справляется с ng-анимацией для уменьшения масштаба в выпадающем списке
Я замедлил его до 10-секундной анимации (а не конечной скорости, очевидно), чтобы вы могли видеть, что я имею в виду. Элементы уменьшаются с заданной скоростью (10 секунд), но элементы ниже не спускаются до завершения ng-анимации. Это вызывает перекрытие.
Это то, что я в моем HTML
<div class="cnt">
<md-list ng-click="menuIsOpen = 1" layout="row" layout-padding="" class="layout-row" layout-align="start center" flex>
<span class="title flex" flex=""> Menu Item</span>
<i class="fa fa-chevron-down"></i>
</md-list>
<div class="sub-menu" ng-show="menuIsOpen===1" ng-animate="'animate'" >
<md-menu-item ng-repeat="item in data" >
<md-button>
<div layout="row" flex="">
<a ui-sref="{{item.link}}">
<p flex=""><i class="fa fa-{{item.icon}}"></i> {{item.title}}</p>
</a>
</div>
</md-button>
</md-menu-item>
</div>
<md-list ng-click="menuIsOpen = 2" layout="row" layout-padding="" class="layout-row" layout-align="start center" flex>
<span class="title flex" flex=""> Menu Item 2</span>
<i class="fa fa-chevron-down"></i>
</md-list>
<div class="sub-menu" ng-show="menuIsOpen===2" ng-animate="'animate'" >
<md-menu-item ng-repeat="item in data">
<md-button>
<div layout="row" flex="">
<a ui-sref="{{item.link}}">
<p flex=""><i class="fa fa-{{item.icon}}"></i> {{item.title}}</p>
</a>
</div>
</md-button>
</md-menu-item>
</div>
</div>
И КСС
.ng-hide-remove {
-webkit-animation:2s scaleIn ease;
animation:2s scaleIn ease;
}
@-webkit-keyframes scaleIn {
From {
transform-origin: top;
-webkit-transform: scaleY(0);
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-o-transform: scaleY(0);
transform: scaleY(0);
}
To {
transform-origin: top;
-webkit-transform: scaleY(1);
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-o-transform: scaleY(1);
transform: scaleY(1);
}
}
@keyframes scaleIn {
From {
transform-origin: top;
-webkit-transform: scaleY(0);
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-o-transform: scaleY(0);
transform: scaleY(0);
}
To {
transform-origin: top;
-webkit-transform: scaleY(1);
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-o-transform: scaleY(1);
transform: scaleY(1);
}
}
Я по существу пытается воспроизвести ту же анимацию, как в угловом сайте материала видели here
п.с. любой другой подход или идея, которая не требует слишком больших изменений в целом, я открыт для нее. Я надеюсь на модификацию css, но я знаю, что это может быть не так просто. Я надеюсь, хотя :)
Спасибо за помощь.
Не совсем знакомы с угловыми, но демо, которые вы связали с анимированными атрибутами высоты, когда делаете это со шкалой. Кроме того, у вас есть анимация от 0 до 30, что является тем, что удерживает меню и делает его доступным. Он перемещается с высоты от 0 до 30 пикселей во время анимации, и как только класс анимации удаляется, он занимает свое место. –
@SergChernata При настройке этих параметров я все равно не приближаюсь к желаемому эффекту. если я удалю 30px ничего не показывает. Если я изменю его на 100%, он откроется для центра наружу не сверху донизу. Я уверен, что что-то не так. Я не могу понять, что – LOTUSMS
О, я знаю, я не могу заставить его работать либо LOL. Но это потому, что я не знаю, что такое Angular, и я не хочу публиковать вам jquery-решение или что-то случайное :) –