向 ng-repeat 添加滑动过渡 div
Adding sliding transition to ng-repeat div
我们的团队在 ServiceNow 中创建了一个小部件,当单击图标时,它会在 div 中显示一行图标和 show/hide 其他详细信息。这就是我们的 html 和客户端控制器的样子:
<div class="icons">
<ul class="flex justify-content-center align-items-center">
<li ng-repeat="item in c.data.linksArray track by $index">
<a class="link" href="javascript:void(0)" ng-click="c.getInfo(item)">
<i title="{{item.titles}}" class='fa {{item.icon}} fa-3x circle-icon'></i>
</a>
</li>
</ul>
</div>
<div class="linkList text-center"
ng-repeat="thing in c.data.linksArray track by $index"
ng-if="thing.isVisible==true">
<ul>
<li class="m-b-sm" ng-repeat="link in thing.links">
<a href="{{link.link_url}}">{{link.link_title}}</a>
</li>
</ul>
</div>
function($scope) {
/* widget controller */
var c = this;
c.getInfo = function(item) {
var isDisplaying = false;
if(item.isVisible== true){
isDisplaying = true;
}
for(var i=0; i<c.data.linksArray.length; i++){
c.data.linksArray[i].isVisible = false;
}
if(isDisplaying == true){
item.isVisible = false;
}else{
item.isVisible=!item.isVisible;
}
}
console.log('icon-link-list');
console.log($scope);
}
一切正常,但我们想通过向 .linkList
class 添加滑动效果来改进它。现在,当点击一个图标时,.linkList
div 会突然出现。有没有办法使用css向div添加滑动过渡效果?
您可以通过纯 css 动画来解决这个问题。将此 css 应用于我们 hidden/shown 的项目。动画会随时播放 css 属性 'display' 会改变。我猜是 linkList 元素?
.linkList {
animation: slideFromLeft .2s;
animation-timing-function: ease;
animation-fill-mode: forwards;
opacity: 0;
}
@keyframes slideFromLeft{
0% {
opacity: 0;
transform: translateX(50px);
}
100% {
opacity: 1;
transform: none;
}
}
编辑:您可能需要将 linkList 上的 ng-if
更改为 ng-show
。
来自文档:
Animations in AngularJS are completely based on CSS classes. As long as you have a CSS class attached to an HTML element within your application, you can apply animations to it.
As ngRepeat
does its thing, each time a new item is added into the list, ngRepeat
will add an ng-enter
class to the element that is being added. When removed it will apply an ng-leave
class and when moved around it will apply an ng-move
class.
有关详细信息,请参阅
我们的团队在 ServiceNow 中创建了一个小部件,当单击图标时,它会在 div 中显示一行图标和 show/hide 其他详细信息。这就是我们的 html 和客户端控制器的样子:
<div class="icons">
<ul class="flex justify-content-center align-items-center">
<li ng-repeat="item in c.data.linksArray track by $index">
<a class="link" href="javascript:void(0)" ng-click="c.getInfo(item)">
<i title="{{item.titles}}" class='fa {{item.icon}} fa-3x circle-icon'></i>
</a>
</li>
</ul>
</div>
<div class="linkList text-center"
ng-repeat="thing in c.data.linksArray track by $index"
ng-if="thing.isVisible==true">
<ul>
<li class="m-b-sm" ng-repeat="link in thing.links">
<a href="{{link.link_url}}">{{link.link_title}}</a>
</li>
</ul>
</div>
function($scope) {
/* widget controller */
var c = this;
c.getInfo = function(item) {
var isDisplaying = false;
if(item.isVisible== true){
isDisplaying = true;
}
for(var i=0; i<c.data.linksArray.length; i++){
c.data.linksArray[i].isVisible = false;
}
if(isDisplaying == true){
item.isVisible = false;
}else{
item.isVisible=!item.isVisible;
}
}
console.log('icon-link-list');
console.log($scope);
}
一切正常,但我们想通过向 .linkList
class 添加滑动效果来改进它。现在,当点击一个图标时,.linkList
div 会突然出现。有没有办法使用css向div添加滑动过渡效果?
您可以通过纯 css 动画来解决这个问题。将此 css 应用于我们 hidden/shown 的项目。动画会随时播放 css 属性 'display' 会改变。我猜是 linkList 元素?
.linkList {
animation: slideFromLeft .2s;
animation-timing-function: ease;
animation-fill-mode: forwards;
opacity: 0;
}
@keyframes slideFromLeft{
0% {
opacity: 0;
transform: translateX(50px);
}
100% {
opacity: 1;
transform: none;
}
}
编辑:您可能需要将 linkList 上的 ng-if
更改为 ng-show
。
来自文档:
Animations in AngularJS are completely based on CSS classes. As long as you have a CSS class attached to an HTML element within your application, you can apply animations to it.
As
ngRepeat
does its thing, each time a new item is added into the list,ngRepeat
will add anng-enter
class to the element that is being added. When removed it will apply anng-leave
class and when moved around it will apply anng-move
class.
有关详细信息,请参阅