如何使用AngularJS使用ng-hide淡出元素?

时间:2017-03-21 13:13:35

标签: javascript angularjs css-animations ng-hide

我当前可以根据控制器中的布尔条件显示/隐藏元素。如果条件为真,我怎么能淡出元素而不是立即隐藏它?

<div id='conversion-image' ng-hide="pages.length > 0">
    generating pages...
    <br />
    <img src='Images/ajax-loader-blue.gif' />
</div>

我也已经包含了ngAnimate依赖性。

var app = angular.module("app", ["ngAnimate"]);

4 个答案:

答案 0 :(得分:5)

您可以使用CSS和ng-animate执行以下操作:

.fade-out.ng-hide {
  opacity: 0;
}

.fade-out.ng-hide-add, .fade-out.ng-hide-remove {
  transition: all linear 0.5s;
}

.check-element {
  border: 1px solid black;
  opacity: 1;
  padding: 10px;
}
<head>
  <meta charset="UTF-8">
  <link href="animations.css" rel="stylesheet" type="text/css">
  <script src="//code.angularjs.org/snapshot/angular.min.js"></script>
  <script src="//code.angularjs.org/snapshot/angular-animate.js"></script>      
</head>

<body ng-app="ngAnimate">
  Hide: <input type="checkbox" ng-model="checked" aria-label="Toggle ngHide"><br />
  <div class="check-element fade-out" ng-hide="checked">
    I fade out when your checkbox is checked.
  </div>
</body>

Angular ng-hide docs

答案 1 :(得分:2)

AngularJS documentation中所述:

  

重写.ng-hide

     

默认情况下,.ng-hide类将使用display:none!important来设置元素的样式。如果您希望使用ngShow / ngHide更改隐藏行为,则可以简单地覆盖.ng-hide CSS类的样式。请注意,需要使用的选择器实际上是.ng-hide:not(.ng-hide-animate)来处理可以添加的额外动画类。

答案 2 :(得分:1)

添加以下课程 class =&#34; animate-show animate-hide&#34;

select

添加以下样式

<div id='conversion-image' class="animate-show animate-hide" ng-
   hide="model.transaction.selectedDocument.pages.length > 0">
     generating pages...
    <br />
   <img src='Images/ajax-loader-blue.gif' />
</div>

以下是一个例子http://plnkr.co/edit/VoWwmHK57wtuyGl6npr0?p=preview

答案 3 :(得分:1)

只需在div中使用淡入淡出类,然后添加一个按钮即可切换条件以隐藏动画。您可以在ng-hide =“your_own_condition”

中使用自己的条件
<div id='conversion-image' class="fade" ng-hide="condition">
    generating pages...
    <br />
    <img src='Images/ajax-loader-blue.gif' />
</div>

<button ng-click="condition=!condition">Toggle</button>

<style>
.fade.ng-hide {
  transition:0.5s linear all;
  opacity:0;
}
</style>