代码之家  ›  专栏  ›  技术社区  ›  DPF

AngularJS ng show with fade动画

  •  0
  • DPF  · 技术社区  · 8 年前

    单击按钮时显示div1和隐藏div2(我设法做到了这一点)。并在div离开/显示时显示淡入淡出动画(我没有做到)

    当它离开/显示时,我不想同时显示两个div。

    我准备了一份 JSFIDDLE

    这是代码

    HTML

        <body ng-controller="AniCtrl as test" >
    <div ng-app="app" ng-init="visibleDiv='div1'">
    
        <md-button ng-click="visibleDiv='div1';test.showBoxOne = !test.showBoxOne">Div 1</md-button>
        <md-button ng-click="visibleDiv='div2';test.showBoxOne = !test.showBoxOne">Div 2</md-button>
    
      <section>
        <div ng-show="visibleDiv == 'div1'" flex>
         <div class="box" ng-show="test.showBoxOne">
              <p>This is Div 1</p>
         </div>
        </div>
        <div ng-show="visibleDiv == 'div2'" id="div2" flex>
         <div class="box" ng-show="test.showBoxOne">
              <p>This is Div 2</p>
              </div>
    
        </div>
      </section>
    </div>
    </body>
    

    JS公司

       angular.module('app', ['ngMaterial', "ngAnimate"]);
    
    app.controller('AniCtrl', AniCtrl);
    
    function AniCtrl() {
      var self = this;
    
      self.showBoxOne = false;
      self.showBoxTwo = false;
    
    
    }
    

        .box{
      background-color:black;
      color:white;
      border:1px solid red;
    }
    
    .box-one {
      -webkit-transition:all linear 0.5s;
      transition:all linear 0.5s;
    }
    
    .box-one.ng-hide {
      opacity:0;
      /* transform: scale(0.8); */
    }
    

    非常感谢。

    2 回复  |  直到 5 年前
        1
  •  1
  •   Naren Murali    8 年前

    我认为这应该是解决方案。

    因为我们正在使用 ng-show 我们应该包括适当的CSS。此外,两个div的条件不可能相同,因此 ng秀

    <div class="box fade" ng-show="!test.showBoxOne">
              <p>This is Div 2</p>
              </div>
    
        </div>
    

    JSFiddle Demo

    HTML:

    <div ng-app="sandbox" ng-init="visibleDiv='div1';test.showBoxOne=true;">
      <div layout="row" flex layout-align="center">
        <md-button ng-click="visibleDiv='div1';test.showBoxOne = !test.showBoxOne">Div 1</md-button>
        <md-button ng-click="visibleDiv='div2';test.showBoxOne = !test.showBoxOne">Div 2</md-button>
      </div>
      <section layout="row">
        <div class="" ng-show="visibleDiv == 'div1'" flex>
         <div class="box fade" ng-show="test.showBoxOne">
              <p>This is Div 1</p>
         </div>
        </div>
        <div class="" ng-show="visibleDiv == 'div2'" id="div2" flex>
         <div class="box fade" ng-show="!test.showBoxOne">
              <p>This is Div 2</p>
              </div>
    
        </div>
      </section>
    </div>
    

    CSS:

    .box{
      background-color:black;
      color:white;
      border:1px solid red;
    }
    .fade {
        transition: all linear 1s;
        opacity: 1;
    }
    
    .fade.ng-hide {
        opacity: 0;
    }
    .ng-hide {
        opacity: 0;
        transition: none 0;
    }
    

        2
  •  0
  •   Varun Sukheja    8 年前

    在您的代码中

     <div class="box" ng-show="test.showBoxOne">
    

    您尚未将box一个类赋予应用了动画的div

    .box-one.ng-hide {
        opacity:0;
        /* transform: scale(0.8); */
    }
    

    更正为:

         <div class="box box-one" ng-show="!test.showBoxOne">
    

    Your FIDDLE